3. sizeof的常量性
sizeof的计算发生在编译时刻,所以它可以被当作 常量
使用,如:
char ary[ sizeof( int ) * 10 ]; // ok
最新的C99标准规定sizeof也可以在运行时刻进行计算,如下面的程序在 Dev-C++
中可以正确执行:
int n;
n = 10; // n动态赋值
char ary[n]; // C99也支持
数组
的动态定义
printf("%d\n", sizeof(ary)); // ok. 输出10
但在没有完全实现C99标准的 编译器
中就行不通了,上面的代码在VC6中就通不过编译。所以我们最好还是认为sizeof是在编译期执行的,这样不会带来错误,让程序的可移植性强些。