본문 바로가기

공부/C++

포인터 동작의 이해.


#include <iostream>
using namespace std;


int main()
{
int i = 0x12345678;

char* pc = (char*)&i;

        cout << hex; //여기서 hex는 아래에 출력되는 정수를 16진수로 나오게 하는 명령이다.
cout << "*pc = " << (int) *pc << "\n";
cout << "*pc = " << *pc << "\n";
cout << "pc = " << pc << "\n";


system("pause");

return 0;

}


/////출력화면




///////////////// 

여기에서 char* pc = (char*)&i; 

까지 실행되면

pc가 가리키는 i의 상태는

0x78  0x56  0x34  0x12

순으로 입력되어있는 int값을 가진 변수 이다.

하지만 char*를 통해 char타입으로 가져오라고 하여  컴퓨터는 가장 앞부분의 내용 만 가져오게 된다.

char타입은 1바이트 를 사용하기 때문이다.

그래서 출력값이 78(16진수) 가 나온다.


출력 화면에서 

가장 윗줄은 출력시에 int값으로 변환 한 값. 

그다음은 변환하지 않은 값.

마지막은 가리키는 주소값[char형인지라 쓰레기값이 같이 출력됨] 이다.