这条线会做什么?
char var[] = {0};
这相当于以下内容吗?
char var[1];
memset(var, 0, NULL);
答案 0 :(得分:3)
char var[]
将var
定义为char数组,其中size由初始化列表大小决定。
因此char var[] = {0}
相当于char var[1] = {0}
。
在以后的代码段中,var
可能首先未初始化(如果是局部变量,我认为它跟随memset
),然后设置为全零。(假设你的意思是memset(var, 0, 1)
)尽管两个片段的可观察效果是相同的,但编译器可能会生成不同的指令,或者编译器可能会选择调用memset
,这可能会在以后的片段中添加函数调用开销。