Untitled

https://github.com/POCU/COMP3200CodeSamples

<aside> 💡 목차


</aside>

C# & C++ UNIT

다음 글은 참조의 특징 1번에서 이어짐

참조(Reference) &

→ 참조의 특징

<aside> 💡 참조란, 포인터를 사용하는 좀 더 안전한 방법이다


1. 참조는 별칭(Alias) 이다

![number라는 변수는 100이라는 값을 가지고 있는데. number라는 변수를 다른 이름(reference)으로 부르고 싶을때

원본을 가르킨다는 의미로 포인터와 비슷하지만, 참조는 자료형 뒤에 & 표시를 붙임으로서, int의 참조형이라는 의미를 가진다

int* 은 ‘나는 포인터형 int야’ 이라고 말했었지? int& 은 ‘나는 참조형 int야’ 이라고 말하는것과 같다

아래 글에서 &가 앞에있을때, 뒤에있을때 차이점을 명확히 하시오 [[ <자료형>& ] 와 [ &<변수> ] 의 차이점을 명확히 해야한다](https://cybecho.notion.site/c460b53a09e64ca4825756b7a0c55140) ](https://prod-files-secure.s3.us-west-2.amazonaws.com/09ccd4d5-876c-4bba-bbdf-cc77a0a11257/726b808c-d8d7-410b-8957-c99e67c7bbe2/Untitled.png)

number라는 변수는 100이라는 값을 가지고 있는데. number라는 변수를 다른 이름(reference)으로 부르고 싶을때

원본을 가르킨다는 의미로 포인터와 비슷하지만, 참조는 자료형 뒤에 & 표시를 붙임으로서, int의 참조형이라는 의미를 가진다

int* 은 ‘나는 포인터형 int야’ 이라고 말했었지? int& 은 ‘나는 참조형 int야’ 이라고 말하는것과 같다

아래 글에서 &가 앞에있을때, 뒤에있을때 차이점을 명확히 하시오 [[ <자료형>& ] 와 [ &<변수> ] 의 차이점을 명확히 해야한다](https://cybecho.notion.site/c460b53a09e64ca4825756b7a0c55140)


2. 참조는 NULL이 될 수 없다

NULL포인터 라는것이 불가능함

NULL포인터 라는것이 불가능함

하지만 한번 참조형으로 만든 별칭은 이제 변경이 가능해짐. 

number의 별칭이야! ..라고 하다가 나중에 가서 
number2의 별칭이야! 라고 바꿀 수 있는 방법이없어요, 
그래서 초기화 중에 반드시NULL이 될 수 없다

3. 참조는 초기화 중에 반드시 선언되어야 합니다

Untitled

반드시 어떠한 변수를 대입해야만함.
즉, 위 코드처럼 하면 ERROR가 나고
int& reference = number;
처럼 ‘나는 number의 별칭이야~’ 라고 작성해야한다

4. 참조하는 대상을 바꿀 수 없다

Untitled

number1 = 100, number2 = 200 이고,

reference는 number1을 참조한다고 적혀있다

즉, reference는 number1과 동일한 값을 가리키는 것임.
이제 다음 줄에서 
reference=number2

기존 reference에 number2를 대입하려고 하는데, 
이게 만약에 레퍼런스를 참조를 다른 거로 바꿀 수 있게 허용을 해버리면, 기존에 가르키던 별칭 대상, 즉 number1을 바꾸는것과 동일하잖슴

근데 그게 아니라, reference = number2 
얘는 그냥 순수하게 대입인데
즉, number2에 있는 200을 reference에 대입을 하는데
그러면 reference도 number2도 둘 다 200이 되겠지?
기존에 reference가 가르키던number1도 200이 되니,

모든 변수의 값이 200이 되어버린다
그래서 별칭은 원본은 다른데 있다, 이렇게 생각하셈

</aside>

int& 와 &number 의 차이점

int & 나는 참조형 int다! 참조형을 선언하는 변수
& number 나는 number의 주소를 불러온다!
int * 나는 포인터형 int다!
* number 나는 number의 주소를 가르킨다!