【发布时间】:2013-05-30 09:35:04
【问题描述】:
Sizeof 运算符是编译时运算符。在编译期间用常量结果值转换 sizeof 表达式。 [异常可变参数模板c99]
通常编译器会在编译时修复变量的大小。 对于数组 n。 但是当我打印 sizeof 数组时,它给出了正确的大小? 这段代码是否在编译时为 n 分配内存?
那么 sizeof 是如何计算的?
函数中的数组a[]怎么样?
int fun(int n)
{
char a[n+3];
return sizeof(a);
}
int
main( )
{
int i;
while(i!=-1){
scanf("%d",&i);
int n[i];
printf("\nsize: %d %d\n",fun(3),sizeof n);
}
}
当我尝试这个时: sizeof 正确打印 n 的大小 [(sizeof (int)) * i] 但该函数总是给出错误的结果 6?
sizeof 如何实现和计算大小(对于浮点数、整数、...数据类型、变量、数组...)?
感谢任何代码!
【问题讨论】:
-
"这个函数总是给出错误的结果 6?" ——怎么会是错误的结果?
sizeof(char)*(3+3)== 6