변수란?

값이 저장된 메모리 주소

 

 

프로그램이 실행되면 크게 2개의 메모리 영역을 사용

 

 

첫 번째 메모리 영역의 이름 : 스택 메모리

 

스택은 가장 나중에 넣은 데이터를 먼저 꺼내는(Last-In-First-Out) 선형적 구조

 

 

두번째는 메모리 영역의 이름 : 힙 메모리

 

힙은 계층적 구조이고, 임의의 순서대로 저장됨

 

변수가 선언되면 스택 메모리에 공간이 할당됨

 

변수에 값을 할당한다 == 메모리에 값을 저장한다

 

 

 

 

스택에 값이 직접 저장되는 형식 값형식

 

값 형식

int, float, char, bool, enum

스택에 값이 직접 저장된다

 

 

 

힙에 값이 저장되는 형식을 참조형식

참조형식은 스택과 힙 메모리 모두 사용

 

참조 형식

string, object, array, 메서드

 

힙에는 값을 스택에는 값의 주소 저장

값을 참조한다해서 참조 형식이라 부른다

 

값은 힙메모리에, 값의 주소는 스택에 저장됨

https://www.youtube.com/watch?v=ywLrndaAPq4&list=PLTFRwWXfOIYBmr3fK17E0VhKPyYrGy75z&index=15

 

null 키워드는 개체를 참조하지 않는 null 참조를 나타내는 리터럴이다

 

즉, null은 아무것도참조하지 않는 값

 

null은 참조 형식 변수의 기본값이다

 

값은 변수에 할당 가능

 

string 은 참조 형식

그러므로 string 변수에 null 값 할당 가능

 

string name = null;

 

https://www.youtube.com/watch?v=ywLrndaAPq4&list=PLTFRwWXfOIYBmr3fK17E0VhKPyYrGy75z&index=15

 

값 형식은 스택에 참조 형식은 힙에 값이 저장된다.

 

리터럴이란?

 

소스 코드의 고정된 값

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

+ Recent posts