
static void Swap(int x, int y)
{
int temporary = y;
y = x;
x = temporary;
}
int x = 10;
int y = 20;
Swap(x, y);
Console.WriteLine("x의 값은: " + x);
Console.WriteLine("y의 값은: " + y);
- 메인함수의 x, y는 값이 복사되어 함수로 들어가게 되고 함수 안에서만 교환이 이루어지고 따로 반환되지 x
- 값이 복사되었기 때문에 메인함수의 x, y와는 별개


- 크기가 5인 배열을 생성하고 1,2,3,4,5로 초기화
- 배열의 인덱스에 접근하여 값을 바꾸는 Swap 함수 생성
사진상의 container라는 이름을 가진 배열은 배열이 저장된 주소를 가리킴

list라는 이름을 가진 배열이 배열이 저장된 주소를 가리킴
그 주소를 참조하여 값을 변경 할 수 있음

🔒 배열의 이름은 배열의 시작주소
static void Swap(int[] list)
{
list[0] = 5;
list[1] = 4;
list[2] = 3;
list[3] = 2;
list[4] = 1;
}
int[] list = new int[5]
{1,2,3,4,5};
Swap(list);
for(int i = 0; i < list.Length; i++)
{
Console.WriteLine(list[i]);
}
즉 위의 코드는 list라는 배열의 이름으로 배열의 시작주소를 가리키고 있고, 이 list로 배열에 접근하여 값을 변경 할 수 있다
✅ 값 타입과 참조 타입을 알았으면 박싱과 언박싱에 대해서도 알 수 있다
값 형식 데이터를 참조 형식으로 변환하는 과정

값 형식은 Stack에 저장
박싱 할 경우 stack의 값이 복사되어 heap에 저장
int code = 10;
object data = code;
Console.WriteLine("data 변수의 값 : " + data);
결과값: data 변수의 값 : 10

char alphabet = 'A';
object pointer = alphabet;
alphabet = (char)pointer; // 강제 형변환 해주어야 함
Console.WriteLine(pointer);
결과값 : A
ex) const & 로 x 값을 반환한다
const int & X()
{
return x;
}
즉, const와 &를 함께 쓰는 이유는,
값 변경을 방지(상수)하면서, 복사비용 없이(참조) 원본을 읽기 위해서다
int x = 10;
object obj = x;
