一个代码段工作的原因但不是另一个

时间:2013-06-19 17:33:13

标签: c compiler-errors

以下代码段有效:

main( )
{
    struct book
    {
        char name[20];
        int noof;
        float prices;
    };
    struct book b={0};
    printf("%d %f", b.noof, b.prices);
}

在这里,我name[ ]被初始化为0.但是以下代码段不起作用:

   main( )
   {
    char c[ ]=0;
    printf("%c", c[0]);
   }    

1 个答案:

答案 0 :(得分:2)

0 in:

char c[ ]=0;

不是有效的数组初始值设定项。你需要在它周围加上括号:

char c[] = { 0 };

或等同地:

char c[] = "";

当您尝试打印时,%c也无效,因为字符0通常无法打印。试试%d

printf("%d\n", c[0]);

除此之外,您的main函数应声明为返回int