lla*_*ais 6 c arrays memory-management sizeof
我知道在C中,数组不应该是动态大小的.
考虑到这一点,是否允许以下代码?(试图声明一个字符数组与double的长度相同.)
char bytes[sizeof(double)];
Run Code Online (Sandbox Code Playgroud)
我的猜测是sizeof在程序执行期间对其参数进行操作,所以这是不允许的,但我不确定.
另外,如果这是C++而不是C,会有区别吗?
sizeof表达式在编译时评估(由编译器而不是预处理器),因此表达式是合法的.
C99中的此规则有一个例外,即允许使用动态数组.在这种情况下,sizeof根据上下文在运行时进行评估(http://en.wikipedia.org/wiki/Sizeof).它不会改变问题中表达式的合法性.