C 初始化包含字符串的结构
在下面的程序中,第5行给出了一个错误,但第11行没有给出,因为两个程序都在执行相同的操作,即使用0初始化字符串? 我很清楚它会给编译器带来错误。我的疑问是,如果第5行出现错误,那么为什么第11行没有呢C 初始化包含字符串的结构,c,string,structure,C,String,Structure,在下面的程序中,第5行给出了一个错误,但第11行没有给出,因为两个程序都在执行相同的操作,即使用0初始化字符串? 我很清楚它会给编译器带来错误。我的疑问是,如果第5行出现错误,那么为什么第11行没有呢 #include<stdio.h> int main() { char name[20]=0; //This should also run if line 11 runs without an error where string is being initialized
#include<stdio.h>
int main()
{
char name[20]=0; //This should also run if line 11 runs without an error where string is being initialized by zero.
struct node
{
char name[20];
int no;
};
struct node a={0};
}
第5行应为:
char name[20] = {'\0'};
我想你忘了括号。尝试像char name[20]={0}那样编译
即使名称不是一个结构,它也是一个数组,这就是为什么必须添加这些括号来初始化的原因。行不同 第5行尝试用整数初始化字符数组
第11行使用初始化为0-'\0'的字符串初始化结构如果要初始化复合对象数组、结构、联合,则需要将值放在大括号{}内。所以你需要写作
char name[20] = { 0 }; /* Or '\0' */
字符串是一种特殊情况,编译器会处理它,因此您可以编写
char name[20] = "";