*참조자는 선언과 동시에 변수를 참조해야 한다.
int num =20;
int &ref =20;(X)
int &ref;(X)
int &ref = NULL;(X)
int &ref = num;(O)
- #include
- using namespace std;
- int& ReferenceReturn(int &ref);
- int IntTypeReturn(int &ref);
- int IntTypeReturn(int &ref)
- {
- ref++;
- return ref;//*****함수가 반환이 되면 정작 지역변수 ref는 소멸이 된다. 따라서 지역변수를 참조형의 변수에 저장하는 일은 없어야 한다.
- }
- int& ReferenceReturn(int &ref)
- {
- ref++;
- return ref;
- }
- int main(void)
- {
- int num1=1;
- //반환형이 참조형인 ReferenceReturn함수는 반환값을 다음과 같이 두가지 형태로 저장할 수 있다.
- int &num2 = ReferenceReturn(num1);//num2라는 별칭이 추가된다.
- //int &num2 = ref// 와 동일
- int num3 = ReferenceReturn(num1);//&num1이 가리키는 값을 저장한다.
- //int num3 = ref;// 와 동일
- int num4 = IntTypeReturn(num1);//(O)
- //int &num4 = IntTypeReturn(num1);(X)반환형이 기본자료형으로 선언된 IntTypeReturn 함수의 반환 값은 반드시 변수에 저장해야 한다.
- //int &num4 = 2;와 동일
- const int &num5 = IntTypeReturn(num1);//(O)
- //C++ 컴파일러는 const 참조자를 이용해서 상수를 참조할때 '임시변수' 를 만든다.
- return 0;
- }
const int num = 10;
변수 num을 상수화!
const int *ptr1 = &val1;
포인터 ptr1을 이용해서 val1의 값을 변경할 수 없음
int *const ptr2 = &val2;
포인터 ptr2가 상수화 됨
const int *const ptr3 = &val3;
포인터 ptr3가 상수화, ptr3을 이용해서 val3의 밧을 변경할 수 없음.
const 참조자는 상수도 참조가 가능하다!!!
const int &ref = 50;
//잘못된 구문
const int num = 20;
int &ref = num;//ref를 통한 값의 변경이 가능해지므로 상수화된 변수를 참조자에 할당 할수 없다.
ref +=10;
//포인터의 사용예
int num = 12;
int *ptr = #//별칭 ptr추가
int **dptr = &ptr;//dptr에 ptr에 담긴 값을 할당
int *(&pref) = ptr;//별칭 pref 추가
int **(&dpref) = dptr;//dpref에 dptr에 담긴 값을 할당
힙에 할당된 변수? 이제 포인터를 사용하지 않아도 접근할 수있다.
int *ptr = new int;
int &ref = *ptr;
ref = 20;
cout<<*ptr<
*윤성우 열혈 C++프로그래밍 발췌
댓글 없음:
댓글 쓰기