C에서 포인터를 사용하는 방법과 비교
값에 의한 호출
- 값을 복사해 와서 사용한다.
- 구조체를 값에의한 호출을 했을 때
- 참조에 의한 호출
참조
별칭으로 부르는 것.
int number = 100;
int& reference = number; // int& 는 int 변수를 참조하는 형이라는 의미를 가지고 있다.
NULL이 될 수 없다.
int& reference = NULL; // compile error
초기화 중에 반드시 선언되어야 한다.
int& refernce; // compile error
참조하는 대상을 바꿀 수 없다.
int number1 = 100;
int number2 = 200;
int& reference = number1; // reference는 number1을 가리키는 참조형이 된다.
reference = number2; // number1에 number2의 값인 200이 들어간다.
함수 매개변수로서의 참조
→ 포인터와 다른 부분
포인터로 swap을 하려고 할 때, int형의 포인터가 NULL이라면, 아래 코드를 실행할 때, segfault가 난다.
reference는 NULL이 될 수 없다. == 소유하지 않은 메모리 장소를 가리킬 수 없다.
- 참조는 포인터와 동일하게 작동한다.
- 언어에서 참조가 가리키는 주소를 바꿀 수 없게 제한하는 것이지 포인터와 똑같다.
- 컴파일러는 참조를 메모리 indirection로 바꿔 준다.
'Language > C++' 카테고리의 다른 글
[C++] 6.Unmanaged Programming: 파일 입출력 (1) | 2024.01.23 |
---|---|
[C++] 5.Unmanaged Programming: 문자열(string) (0) | 2024.01.21 |
[C++] 3.Unmanaged Programming: 입력 스트림(Input Stream) (1) | 2024.01.21 |
[C++] 2.Unmanaged Programming: 출력형식 지정(output formatting) (0) | 2024.01.21 |
[C++] 1.Unmanaged Programming: namespace (0) | 2024.01.21 |