我尝试获取多维数组的大小,并编写了以下C代码。
在上面的三个打印语句中,我得到的大小都是4。有人可以解释一下在多维数组的情况下
#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;
}
在上面的三个打印语句中,我得到的大小都是4。有人可以解释一下在多维数组的情况下
sizeof
是如何工作的吗?为什么第三个打印输出相同?
sizeof()
返回size_t
,你需要使用%zu
作为格式说明符。 - RoadRunner%u
,那么应该是printf("... %u...", (unsigned) sizeof(b[5]));
。 - AnT stands with Russiasizeof
而不是sizeof()
。()
是参数表达式的一部分(顺便说一句,是一部分多余的内容),而不是运算符本身的一部分 :) (翻译者注:OP指原帖作者,sizeof
是一个C++操作符,用于计算数据类型或变量的大小,而()
在这里是指函数调用时的参数列表,因此在这个语境中并不需要加上括号。) - AnT stands with Russiasizeof b[3]
是可以接受的。 - RoadRunner