小编use*_*891的帖子

C 具有可变大小的初始化和未初始化数组

我有接下来的两个代码示例:

const char *val = strchr(ch, ' ');
const int diff = (int)(val - ch);

char arr[diff];
Run Code Online (Sandbox Code Playgroud)

const char *val = strchr(ch, ' ');
const int diff = (int)(val - ch);

char arr[diff] = {0};
Run Code Online (Sandbox Code Playgroud)

第二个产生错误,如

错误:可变大小的对象可能未初始化

这是正确的错误,我明白它为什么会发生。

我想知道为什么第一个代码片段不会产生错误?

更新: 关于 sizeof(arr) 在第一个片段中也给出了数组的大小,但我认为 sizeof 是一个编译时运算符(?)

c arrays initialization sizeof variable-length-array

5
推荐指数
1
解决办法
62
查看次数