#include <stdio.h>
int main() {
int *a[2]; // an array of 2 int pointers
int (*b)[2];
// pointer to an array of 2 int (invalid until assigned) //
int c[2] = {1, 2}; // like b, but statically allocated
printf("size of int %ld\n", sizeof(int));
printf("size of array of 2 (int *) a=%ld\n", sizeof(a));
printf("size of ptr to an array of 2 (int) b=%ld\n", sizeof(b));
printf("size of array of 2 (int) c=%ld\n", sizeof(c));
return 0;
}
a
은 2 정수 포인터의 배열이므로, 크기는 2 * 4 = 8
이 아니어야합니까?왜 sizeof (a)가 16입니까? (int의 크기는 4입니다.)
GCC에서 테스트되었습니다.
64 비트 컴퓨터에서 실행중인 경우 포인터 크기는 8 바이트이므로 2 포인터 = 16 바이트가 될 수 있습니다. 컴퓨터에서 sizeof (int *) 란 무엇입니까? – zserge