我正在努力寻找这个问题的原因,因为我正在复习的书告诉我初始化数组的大小,但是,这个可以编译。

int main (void){

    char word_0[] = "Hola que tal\n";

    printf("%s", word_0);

    char word_1[20] = "Hola que tal\n";

    printf("%s", word_1);

    return 0;
}

我知道我在“浪费”word_1的内存,因为我要求的空间(大小=20)比我需要的多,但是word_0(大小=?)会发生什么?

最佳答案

如果在声明数组时没有指定任何大小,但使用了初始值设定项,C将选择一个大小刚好足以容纳初始值设定项指定的所有元素的大小。在你的情况下

    char word_0[] = "Hola que tal\n";

,即14个字符(其中包括一个用于字符串结束符)。

关于c - 炭字[]与炭字[5],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52637408/

10-14 18:15