我试图获得多维数组的大小,并在C中编写代码,如下所示.
#include <stdio.h>
char b[3][4];
int main(void){
printf("Size of array b[3]=%d\n", sizeof(b[3]));
printf("Size of array b[2]=%d\n", sizeof(b[2]));
printf("Size of array b[5]=%d\n", sizeof(b[5]));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在以上三个打印语句中,我的大小等于4.有人可以解释sizeof多维数组的情况如何工作吗?为什么第三次打印的输出相同?
b是行3和列的2D字符数组4.
所以,如果你带走,sizeof(b)你会得到12.
b[0](并且b[i]通常)具有一种大小的1D字符数组4.所以.如果你带走sizeof (b[0])你会得到4.
b[0][0](b[i][j]一般而言)有一种类型char.所以,如果你带走,sizeof (b[0][0])你会得到1.
sizeof不依赖于数组索引.即使对于b[0]和b[100],类型仍保持相同,即使它可能超出阵列的内存范围.