// Example03.cpp
// 주소와 주소를 표현하는 자료형 그리고 포인터
#include "pch.h"
#include <stdio.h>
int main()
{
int num = 0x12345678;
printf("num = %08X\n", num); // 12345678
printf("&num = %p\n", &num); // 00AFFB00
int temp;
temp = num;
temp = (int)& num; // 00CFF8C8
printf("temp = %08X\n", temp); // 00CFF8C8
printf("&temp = %p\n", &temp); // 00CFF8BC
int* p = #
printf("%d\n", *p); // 305419896
int test;
test = temp;
printf("%08X\n", test); // 00CFF8C8
// Memory 고 <-- 12 34 56 78 --> 저
test = *(short*)temp;
printf("%08X\n", test); // 00005678
test = *p; // test = (int*)p;
printf("%08X\n", test); // 12345678
test = *(short*)(temp + 1);
printf("%08X\n", test); // 00003456
test = *(short*)temp + 1;
printf("%08X\n", test); // 00005679(00005678 + 1)
test = *((short*)temp + 1);
printf("%08X\n", test); // 00001234
test = *(char*)(temp + 2); // 0x34 -> 산술 연산
test = *(char*)((short*)temp + 1); // 0x34 -> 주소 연산
test = *((char*)p + 2); // 0x34
printf("%08X\n", test);
printf("&num = %p, temp = %08X, test = %08X\n", &num, temp, test);
return 0;
}
// 고 <- 12 34 56 78 -> 저
int num = 0x12345678;
int test;
test = *(short*)num;
printf("%08X\n", num); // 00005678
test = *(short*)(num + 1);
printf("%08X\n", num); // 00003456
test = *(short*)num + 1;
printf("%08X\n", num); // 00005679
test = *((short*)num + 1);
printf("%08X\n", num); // 00001234
- 산술 연산 같은 경우 변수의 주소에 접근하여 +n만큼 이동한 다음 포인터 자료형 만큼(단위) 읽어서 값을 출력
- 주소 연산 같은 경우 포인터의 자료형 만큼 이동하여 값을 읽어서 출력
해당 게시글은 김성엽 선생님의 따배씨 "주소와 주소의 자료형 그리고 포인터" 영상을 바탕으로 작성된 글입니다.