我有下面两个代码示例:
const char *val = strchr(ch, ' ');
const int diff = (int)(val - ch);
char arr[diff];
并且
const char *val = strchr(ch, ' ');
const int diff = (int)(val - ch);
char arr[diff] = {0};
第二段代码出现了以下错误:
error: 变长对象不可初始化这是正确的错误提示,我明白为什么会出现这个错误。
我想知道为什么第一个代码片段没有出现这个错误?
更新: 在第一个代码片段中,sizeof(arr)返回数组的大小,但我认为sizeof是一个编译时操作符(?)。