변수란?
값이 저장된 메모리 주소
프로그램이 실행되면 크게 2개의 메모리 영역을 사용
첫 번째 메모리 영역의 이름 : 스택 메모리
스택은 가장 나중에 넣은 데이터를 먼저 꺼내는(Last-In-First-Out) 선형적 구조
두번째는 메모리 영역의 이름 : 힙 메모리
힙은 계층적 구조이고, 임의의 순서대로 저장됨
변수가 선언되면 스택 메모리에 공간이 할당됨
변수에 값을 할당한다 == 메모리에 값을 저장한다
스택에 값이 직접 저장되는 형식 값형식
값 형식
int, float, char, bool, enum
스택에 값이 직접 저장된다
힙에 값이 저장되는 형식을 참조형식
참조형식은 스택과 힙 메모리 모두 사용
참조 형식
string, object, array, 메서드
힙에는 값을 스택에는 값의 주소 저장
값을 참조한다해서 참조 형식이라 부른다
값은 힙메모리에, 값의 주소는 스택에 저장됨
null 키워드는 개체를 참조하지 않는 null 참조를 나타내는 리터럴이다
즉, null은 아무것도참조하지 않는 값
null은 참조 형식 변수의 기본값이다
값은 변수에 할당 가능
string 은 참조 형식
그러므로 string 변수에 null 값 할당 가능
string name = null;
값 형식은 스택에 참조 형식은 힙에 값이 저장된다.
리터럴이란?
소스 코드의 고정된 값
https://learn.microsoft.com/ko-kr/dotnet/api/system.text.ascii?view=net-8.0
Ascii 클래스 (System.Text)
System.Text 네임스페이스의 System.Text.Ascii에 대해 자세히 알아보세요.
learn.microsoft.com
그렇다면 int a = null; 은 안되고
string b = null; 이 되는 이유는??
참조 형식의 변수는 해당 객체가 아니라 객체의 주소를 저장한다.
'Study > C#' 카테고리의 다른 글
[C#] 입력 받기 (0) | 2024.05.25 |
---|---|
[C#] 박싱과 언박싱 (0) | 2024.05.25 |
[C#] 문자열 보간 (0) | 2024.05.25 |
[C#] 형식 변환 (0) | 2024.05.25 |
[C#] 열거형식 (0) | 2024.05.25 |