#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형인지라 쓰레기값이 같이 출력됨] 이다.
'공부 > C++' 카테고리의 다른 글
0과 NULL (0) | 2011.11.25 |
---|---|
아무것도 가리키지 않는. 포인터의 출력 (0) | 2011.11.24 |
주소를 사용하여 정보에 접근하기[포인터를 사용해서 포인터가 가리키는 값을 바꾸는 방법] (0) | 2011.11.24 |
무슨 타입이든 가리킬 수 있는 void 포인터 (2) | 2011.11.24 |
포인터의 종류 (0) | 2011.11.24 |