C++/C++ 기초 플러스 6판(Book)

[C++] 포인터 선언과 초기화

suppresswisely 2025. 3. 22. 21:12

포인터 선언

포인터를 선언할때 다음과 같이 선언을 한다.

int* p_updates;

 

여기서 int*는 데이터 타입이고 p_updates가 포인터(주소)이다, * p_updates는 포인터가 아니라 int형 변수이다.[1]

 

포인터 다중 선언

int* p1, p2;

 

여기서 p1은 포인터 변수고, p2를 보통의 int형 변수로 생성된다.[2] 그러므로 p1과 p2를 모두 포인터 변수로 만들려면 각각의 포인터 변수 이름 앞에 * 연산자를 따로 사용해야 한다.[2]

 

위험한 포인터 선언

long * fellow;
*fellow = 223323;

 

이것은 왜 위험할까?

위에 글을 토대로 fellow가 포인터(주소)이다, * fellow는 int형 변수이다. 그렇다면 223323은 어디에 저장 되었을까?

이것은 아무도 모른다. fellow를 초기화하지 않았기 때문에 fellow에는 지금 엉뚱한 값이 들어 있을 것이다.[3]

 

올바른 포인터 선언

// 주소 대입
int* pt;
pt = (int*) 0xB8000000;// 데이터형 일치

// new 사용
int * pn = new int;

// 다른 변수 활용
int higgens = 5;
int* pt = &higgens;

 

위와 같이 선언을 해야 올바른 선언이 가능하다.[4]

 

[1]p.183

[2]p.184

[3]p.186

[4]pp.187-188