我读过,C 中的 sizeof 运算符是在编译时解释的,并且由于在编译时编译器知道数组大小及其类型,因此 sizeof 能够计算数组占用的字节数。但是 sizeof 如何适用于以下代码:
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
int a[n];
int s=sizeof(a);
printf("%d",s);
return 0;
}
这里数组的大小在编译时是未知的,那么它是如何正常工作的呢?
sizeof
在 C89 中始终在编译时计算。从 C99 和可变长度数组开始,当可变长度数组是表达式中的一部分时,它是在运行时计算的sizeof
操作数。
对于评价同样如此sizeof
操作数:在 C89 中不求值,但在 C99 中如果操作数是可变长度数组类型,则对其求值。例如:
int n = 5;
sizeof (int [n++]);
// n is now 6
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)