int func(int k) -> call by value
int func(int *k) -> call by pointer
int func(int &k) -> call by reference
cpp에서 사용하는 &는 call by value 와 call by pointer를 합쳤다고 생각하면됩니다.
왜냐? -> 내부적으로는 call by pointer이지만 접근할때 .으로 접근하여서 value 식으로 접근 할 수 있기때문입니다.
함수를 호출 하는 부분에서 1...func(person) (cf : person은 구조체 형으로 선언되었습니다.)
받는쪽에서 2...void func(Person &p)로 받으면 call by reference가 된다.
1번부분에서 묵시적 형변환이 실행되어서 기본 변수로 넣어줘도 -> &타입으로 변환 되어서 넘어간다..
별명 (Alias)
별명용 변수 &
EX :
int x = 10;
int &ref = x;
이제 ref는 x처럼 쓸 수 있습니다.
& 사용 예시1
int iValue = 1;
int *pValue = &iValue;
int *& rfpValue = pValue;
cout << *rfpValue << endl; // -> 1이나옴
cout << rfpValue <<endl; // 주소값이 나옴
- & rfpValue -> 순서대로 읽으면 포인터에 대한 주소값입니다라고 해석 할 수 있습니다.
그러므로 이것도 포인터에 대한 &이기에 포인터처럼 쓰면됩니다.
& 사용 예시2
별명에 대한 하는 대상을 변경 시킬 수 있다.
ex :
int iValue1 = 1000, iValue2 = 2000;
int &refV = iValue1;
//이후에 대상을 변경
refV = iValue2;
//가능하다
'c++' 카테고리의 다른 글
오버로딩 된 new, (0) | 2022.04.09 |
---|---|
참조 vs 포인터 (0) | 2022.01.02 |
cpp transform (0) | 2021.12.15 |
static 키워드 (cpp, java) (0) | 2021.10.23 |
연산자 오보로딩 (0) | 2021.10.23 |