C
[C] 포인터 변수 a의 (*a)++ / a++ 차이
bunbun2
2023. 7. 5. 14:18
(*a)++; 는 a가 가르키는 값을 증가
a++;는 a에 담긴 주소를 증가
short* a;
short b = 2;
a = &b; // 포인터 변수 a에 b의 주소를 할당해서 b를 가리킴
(*a)++; // a가 가리키는 b의 값을 증가
a++; // a의 주소를 증가
포인터 변수는 모두 4바이트를 할당받는다.
char*든 short*이든 void*든 int*든.
그 안에 주소를 저장하는데, 마지막 코드인 a++; 에 대해 정리할 것이 있어서 정리해보려고함
(*a)++; 가 실행되면 b가 1 증가되어 3이 되는데.
a++가 실행되면 어떨까?
a에 담긴 주소가 8이었다면,
1이 증가되어 9가 되는건가?
결론은 2(short의 바이트 크기)가 증가해서 10이 된다.
변수가 할당되는 메모리는 1byte 단위로 쪼개져 있는데,
short 타입의 b 변수는 2byte의 크기를 가졌기에 두칸의 메모리 공간을 할당받았다.
b의 주소값을 담은 a는 b의 시작 주소 8을 담고 있었고,
a++; 로 하나 증가시키면, b의 타입의 크기에 맞춰서 주소값이 올라간다 ( short은 2)
int* 였다면 4가 증가할것이고
char* 였다면 1이 증가하는 것