C 语言:在 C 语言中计算数组大小的确切程度



内存地址指定它们在内存中指向多少字节的数据,因此似乎任何变量的大小都是通过查看内存地址并查看变量在内存中占用多少来确定的。那么数组的大小是如何确定的呢???- 因为默认情况下,数组是指向数组中第一项的指针:

int main() {
int a[] = {1,2,3,4,5};
// both show same memory address
printf("%pn", a);
printf("%pn", &a[0]);
// somehow the entire size of a is calculated
printf("%lun", sizeof(a)); // 20 (all elements)
return 0;
}

当你写的时候

int a[] = {1,2,3,4,5};

编译器已经知道"a"中只有 5 个整数。

当您致电时

sizeof(a)

你的编译器(不是你的程序(将计算一个的大小。这基本上在您的程序中设置了数字"20"。每次程序运行时,它都会输出数字 20,它不会使用 sizeof。这不是在运行时计算的,而是在编译时计算的,因为在你的情况下,sizeof 是一个编译时运算符。 (需要注意的是,当你有可变长度数组时,可以在运行时评估 sizeof(

最新更新