看下面的代码:
#include<stdio.h>
int main(void)
{
char name[7]={'E','R','I','C'};
printf("%s",name);
}
它输出整个
name
ERIC ,为什么呢?仅当我们按如下所示初始化字符数组%s
时,name
才应该起作用吗: char name[7]={'E','R','I','C','\0'}; //With NULL terminator
我不考虑以下内容,因为这显然假定了一个以空字符结尾的字符数组:
char name[7]="ERIC"
最佳答案
根据the c11 specification
因此,当您初始化这样的数组时:
char name[7]={'E','R','I','C'};
与以下内容相同:
char name[7]={'E','R','I','C', 0, 0, 0};
因此,
name
仍为空终止。