初始化包含字符串的结构

时间:2013-08-29 08:48:57

标签: c string structure

在下面的程序第5行中给出了一个错误,但是当两者都做同样的事情时,它们没有给出错误,即用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 by zero.
    struct node
    {
        char name[20];
        int no;
    };
    struct node a={0};
}

4 个答案:

答案 0 :(得分:2)

如果要初始化复合对象(数组,结构,联合),则需要将值放在花括号{}中。所以你需要写

char name[20] = { 0 };  /* Or '\0' */

字符串是一种特殊情况,编译器会处理它,因此您可以编写例如。

char name[20] = "";

答案 1 :(得分:1)

第5行应该是:

char name[20] = {'\0'};

答案 2 :(得分:0)

我想你只是忘了支架。尝试编译char name[20]={0} 即使name不是结构,它也是一个数组,这就是你必须添加这些括号来初始化的原因

答案 3 :(得分:0)

线条不一样。

第5行试图用整数初始化一个char数组。

第11行初始化一个结构,其字符串初始化为0 - '\ 0'