我和我的朋友正在为这个争论。
char **array[2][2];
指针数组的指针占用内存
8 + 2*2*8
-8,然后指针数组占用内存32?或者仅仅是8,因为我们声明了一个指向指针数组的指针。这些声明不必为指针数组分配空间,只需为指针分配空间?
最佳答案
编译器分配整个数组(32字节)。您可以使用sizeof()来调查这些问题:
#include <stdio.h>
char ** array[2][2];
int main() {
printf("size = %zu\n", sizeof(array));
printf("size[0] = %zu\n", sizeof(array[0]));
printf("size[0][0] = %zu\n", sizeof(array[0][0]));
return 0;
}
在x86_64体系结构上返回:
size = 32
size[0] = 16
size[0][0] = 8
每个指针的长度为8字节,二维数组总共包含4个。
关于c - 以下声明的大小是多少?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50710016/