*다중포인터는 어떤 상황에 필요할까 ??
void SetMessage(const char* a)
{ a = "Bye"; }
const char* msg = "Hello";
SetMessage(msg);
cout << msg << endl;
=> "Hello" / "Bye" 어느 것으로 출력될까 ??
=> "Hello"
=> 이유는 ??
a 는 함수내부의 복사본 , 복사본에 "Bye" 의 주소를 넣은 것이기 때문에
실질적인 msg 에는 영향이 없음.
*그렇다면 어떻게 해야할까??
=> 포인터의 포인터
즉, 포인터의 주소를 저장할 수 있는 포인터를 매개변수로 받는다.
@.rdata Hello주소
=> 리터럴 상수이기 때문
const char* msg = "Hello";
SetMessage(&msg);
cout << msg << endl;
void SetMessage(const char** a)
{
*a = "Bye";
cout << *a << endl;
cout << **a << endl; => 어떤 값이 나오나 ??
}
void SetMessage2( const char*& a )
{
a = "Bye";
cout << a << endl;
cout << *a << endl;
}
void SetMessage3( char** a ) => const char** 와 다른점은 무엇인가??
{
**a = 'f';
//a = &mmsg; // msg 는 const char 이기 때문
cout << *a << endl;
cout << **a << endl;
}
void SetMessage4(const char** const a)
{
*a = "Bye";
const char* mmsg = "HI";
//a = &mmsg; // const a 상수이기 때문
cout << *a << endl;
cout << **a << endl;
}
본 내용은 인프런의 루키스님 강의를 듣고 정리한 내용입니다.
'프로그래밍 > C++' 카테고리의 다른 글
#36. 2차원배열 &다중포인터 (0) | 2022.07.19 |
---|---|
#35. 다차원 배열 (0) | 2022.07.19 |
#33. 포인터 & 배열 (0) | 2022.07.19 |
#32. 배열기초 (0) | 2022.07.19 |
#31. 참조 & 포인터 (0) | 2022.07.19 |