zol*_*i2k 11 c random gcc sizeof
你能解释一下sizeof()
随机长度数组的工作原理吗?我认为sizeof()
在编译期间计算数组,但是,具有随机长度的数组的大小似乎是正确计算的.
例:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(){
srand ( (unsigned)time ( NULL ) );
int r = rand()%10;
int arr[r]; //array with random length
printf("r = %d size = %d\n",r, sizeof(arr)); //print the random number, array size
return 0;
}
Run Code Online (Sandbox Code Playgroud)
多次运行的输出:
r = 8 size = 32
r = 6 size = 24
r = 1 size = 4
Run Code Online (Sandbox Code Playgroud)
编译器:gcc 4.4.3
And*_*nck 13
在C99中,sizeof可变大小的数组在运行时计算.从C99草案6.5.3.4/2:
sizeof运算符产生其操作数的大小(以字节为单位),该操作数可以是表达式或类型的带括号的名称.大小由操作数的类型确定.结果是整数.如果操作数的类型是可变长度数组类型,则计算操作数 ; 否则,不评估操作数,结果是整数常量
归档时间: |
|
查看次数: |
1114 次 |
最近记录: |