#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
吗?
在 GCC 上测试。
最佳答案
您可能正在 64 位机器上编译,其中指针为 8 个字节。
int *a[2]
是一个包含 2 个指针的数组。因此 sizeof(a)
返回 16。
(因此它与 int
的大小无关。)
如果您针对 32 位编译它,您将主要得到 sizeof(a) == 8
。
关于c - 为什么 sizeof(a) 是 16? (sizeof int 是 4 ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11429463/