sizeof()可用于定义数组长度吗?

lla*_*ais 6 c arrays memory-management sizeof

我知道在C中,数组不应该是动态大小的.

考虑到这一点,是否允许以下​​代码?(试图声明一个字符数组与double的长度相同.)

char bytes[sizeof(double)];
Run Code Online (Sandbox Code Playgroud)

我的猜测是sizeof在程序执行期间对其参数进行操作,所以这是不允许的,但我不确定.

另外,如果这是C++而不是C,会有区别吗?

sas*_*ang 8

sizeof表达式在编译时评估(由编译器而不是预处理器),因此表达式是合法的.

C99中的此规则有一个例外,即允许使用动态数组.在这种情况下,sizeof根据上下文在运行时进行评估(http://en.wikipedia.org/wiki/Sizeof).它不会改变问题中表达式的合法性.


Mic*_*ker 6

是的,它可以,它甚至不是动态大小,因为它sizeof(double)是一个编译时常量.