Notice
Recent Posts
Recent Comments
Link
오븐 노트
[C++] 다중 포인터 본문
사실상 2차 포인터를 초과하여 들어갈 일은 거의 없다.
있다면 소스가 문제가 있다고 볼 수 있을정도
#include <iostream>
using namespace std;
void SetNumber(int* a)
{
*a = 1;
}
void SetMessage(const char* a)
{
// .rdata Bye주소[B][y][e][\0]
// [매개변수][RET][지역변수(msg(Hello주소))] [매개변수(a(Hello주소))][RET][지역변수]
// [매개변수][RET][지역변수(msg(Hello주소))] [매개변수(a(Bye주소))][RET][지역변수]
// [매개변수][RET][지역변수(msg(Hello주소))]
a = "Bye";
}
void SetMessage(const char** a)
{
// [매개변수][RET][지역변수(msg(Hello주소))] [매개변수(a(&msg))][RET][지역변수]
// [매개변수][RET][지역변수(msg(&msg))] [매개변수(a(&msg))][RET][지역변수]
// [매개변수][RET][지역변수(msg(&msg))]
*a = "Bye";
}
void SetMessage2(const char*& a)
{
// [매개변수][RET][지역변수(msg(Hello주소))] [매개변수(a(&msg))][RET][지역변수]
// [매개변수][RET][지역변수(msg(&msg))] [매개변수(a(&msg))][RET][지역변수]
// [매개변수][RET][지역변수(msg(&msg))]
a = "Wow";
}
int main()
{
int a = 0;
SetNumber(&a);
cout << a << endl;
// .rdata Hello주소[H][e][l][l][o][\0]
// msg[ Hello주소 ] << 8바이트(64bit 운영체제 기준)
const char* msg = "Hello";
SetMessage(msg);
// cout << msg << endl;
// pp[ 주소1 ] << 8바이트
// 주소1[ 주소2 ] << 8바이트
// 주소2[ ] << const char형 1바이트
//
// pp[ &msg ] << 8바이트
// &msg[ Hello주소 ] << 8바이트
// Hello주소[ .rdata Hello주소[H][e][l][l][o][\0] ] << const char형 1바이트
const char** pp = &msg;
SetMessage(&msg);
cout << msg << endl;
// *을 하나씩 타고 간다고 생각
SetMessage2(msg);
// 사실상 2차 포인터를 초과하여 들어갈 일은 거의 없다.
// 있다면 소스가 문제가 있다고 볼 수 있을정도
return 0;
}
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.
모든 글은 제가 공부하기 위해 작성합니다.
'Develop > C++' 카테고리의 다른 글
[C++] 포인터 마무리 (0) | 2022.07.15 |
---|---|
[C++] 다차원 배열 (0) | 2022.07.15 |
[C++] 로또 번호 생성기 (0) | 2022.07.13 |
[C++] 포인터 vs 배열 (0) | 2022.07.11 |
[C++] 배열 기초 (0) | 2022.07.11 |