포인터 변수의 타입이 뭐든 포인터 변수의 크기 자체는 다 같음 short* asd
든 int* asd
든... 크기가 다 같음
32비트 운영체제 포인터변수 크기는 4바이트, 64비트 포인터변수 크기는 8바이트
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char* pChar = nullptr;
short* pShort = nullptr;
printf("%zd\n", sizeof(int*)); // zd는 size_t타입을 받기위한 형태
return 0;
}
int 포인터 변수에 += 1 (iPtr += 1
) 을 하면 100번지가 101번지가 되는게 아니라 104번지가 됨
이 이유는? --> int 포인터 변수한테 1만큼 증가시키라는건 정말 주소값에 1을 더하라는 것이 아니라 다음 int의 위치로 가라는 것이기 때문
char 포인터 변수에 1을 더하면? --> 이건 이제 1byte만큼 증가함, char은 1바이트기 때문
배열의 원소들의 메모리 주소는 연속적인 구조이다
배열의 이름은 배열의 시작주소이다
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char* pChar = nullptr;
short* pShort = nullptr;
printf("%zd\n", sizeof(int*));
int iArr[10] = { 1, 2, 3 };
printf("%d\n", *(iArr + 1)); // 4바이트만큼 뜀
printf("%d\n", *(iArr + 2)); // 8바이트만큼 뜀
return 0;
}
iArr[1] = *(iArr + 1)