1. 변수란 무엇인가?
- 코드 관점: 값을 대입하거나 변경할 수 있는 요소.
- 메모리 관점: 데이터를 담는 일정 크기의 공간. 데이터 형식에 따라 크기가 달라집니다.
- 수학적 관점: 변하는 값을 가진 요소.
컴퓨터에서 변수를 사용하려면 변수 선언이 필요합니다.
변수 선언은 컴파일러에게 필요한 메모리 공간을 예약하도록 지시하는 과정입니다.
int x; // 변수 선언
x = 100; // 데이터 할당
2. 메모리와 변수의 관계
변수를 선언하면 메모리 공간이 할당되고, 값을 대입하면 해당 공간에 데이터가 저장됩니다.
예시:
int x = 100;
위 코드는 선언과 동시에 값을 할당한 경우로, 변수 x의 메모리 공간에 100이 저장됩니다.
3. 값 형식(Value Type)과 참조 형식(Reference Type)
변수는 값 형식과 참조 형식으로 나뉩니다.
a. 값 형식 (Value Type)
- 데이터를 스택(Stack) 메모리 영역에 저장.
- 코드 블록이 끝나면 자동으로 제거됩니다.
- 저장 및 제거 과정: 위 코드에서 b가 먼저 제거되고, 다음으로 a가 제거됩니다.
-
{ int a = 100; int b = 200; }
b. 참조 형식 (Reference Type)
- 데이터는 힙(Heap)에 저장되고, 스택은 힙의 메모리 주소를 참조합니다.
- 코드 블록이 끝나도 힙에 데이터는 남아 있습니다.
- 힙의 데이터를 제거하려면 **가비지 컬렉터(Garbage Collector)**가 필요합니다.
예시:
object a = 10;
- 스택: 변수 a와 메모리 주소값 (&2000) 저장.
- 힙: 데이터 10이 주소 2000에 저장.
4. 변수의 종류
a. 전역 변수 (Global Variable)
- 클래스 내부에서 선언되며, 클래스 객체가 살아있는 동안 참조 가능합니다.
- 기본값이 자동으로 할당됩니다. (예: int 타입은 0)
예시:
class Example
{
int globalVar; // 기본값 0 자동 할당
}
b. 지역 변수 (Local Variable)
- 메서드 내에서 선언되며, 메서드 호출이 끝나면 메모리에서 제거됩니다.
- 기본값이 자동으로 할당되지 않으므로, 초기화를 해야 사용 가능합니다.
예시:
public void Method()
{
int localVar;
localVar = 100; // 초기화 필수
}
5. 메모리 구조 요약
- 스택(Stack): 값 형식 데이터를 저장하며, 데이터가 코드 블록이 끝나면 제거됩니다.
- 힙(Heap): 참조 형식 데이터를 저장하며, 데이터가 명시적으로 제거되지 않으면 계속 유지됩니다.
'프로그래밍 언어 및 개발 도구 > c#' 카테고리의 다른 글
상수와 열거형, Nullable 및 var 형식 완벽 정리 (0) | 2024.12.14 |
---|---|
데이터 형식 총정리: 값 형식, 참조 형식, 박싱과 언박싱까지 (0) | 2024.12.14 |
연산자 정리: 기초부터 고급까지 알아야 할 모든 것 (0) | 2024.12.14 |
데이터 형식 변환: 정수, 부동소수점, 문자와 숫자의 변환 이해하기 (0) | 2024.12.14 |
메소드 완벽 가이드: 선언부터 오버로딩, 로컬 함수까지 (0) | 2024.12.13 |