
https://github.com/POCU/COMP3200CodeSamples
<aside> 💡 목차
</aside>
&<aside> 💡 참조란, 포인터를 사용하는 좀 더 안전한 방법이다
 ](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)
NULL이 될 수 없다
NULL포인터 라는것이 불가능함
하지만 한번 참조형으로 만든 별칭은 이제 변경이 가능해짐.
number의 별칭이야! ..라고 하다가 나중에 가서
number2의 별칭이야! 라고 바꿀 수 있는 방법이없어요,
그래서 초기화 중에 반드시NULL이 될 수 없다

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

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>
<aside> 💡 참조는 소유하지 않은 메모리를가져올 수 없기 때문이다
[참조형의 장점](https://cybecho.notion.site/f791b62118794708b5017179e93c5c7d)
</aside>
[참조형의 장점](https://cybecho.notion.site/f791b62118794708b5017179e93c5c7d) 다음 내용의 동기화 블록 내용입니다.
내용을 요약하면 다음과 같습니다1️⃣ 매개변수에 NULL이 들어오는 걱정을 안해도 된다 2️⃣ 참조는 소유하지 않은 메모리를가져올 수 없어 안전하다
<aside> 💡 C에서 말하는 참조와 C++에서 말하는 참조의 개념은 좀 다르다
C에서 참조란
하드웨어적인측면, 메모리적인 측면에서 어떤개념으로
매개변수를 어디로 전달할거냐 라는 의미었다
그 매개변수로 복사해서 전달할 거냐?
아니면 원본을 전달할거냐?
...라는 개념을 얘기할 때 값에 의한 호출, 참조에 의한 호출 이라고 말했음
하지만 C++ 에서 말하는 참조는 C의 참조와 동일하지 않다
</aside>
<aside> 💡 C++의 참조 기능은
Java에서 이제 포인터를 없애면서 하려고 했던 일들을
C++에서도 Java만큼의 안정성을 똑같이 보장을 하면서, 성능도 보장하는것이 바로 C++의 참조 기능이다.
C에서는 포인터를 썼잖아? 근데 그게 위험에서 Java에서 포인터를 없앤 것이고 C,C++에서는 여전히 포인터를 쓰지만, C++에서는 다음과 같은 경우일땐 참조를 사용한다.
1. 포인터가 정말 없어도 될 때
2. 포인터 연산이 없어도 될 때
3. 주소 변경이 없어도 될 때
</aside>