我很难找到这样做的原因,因为我正在复习的书告诉我要初始化数组的大小,但是,这是编译的。
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中“浪费”内存,因为我要求的空间比我需要的要多(size = 20),但是word_0 (size = ?)会发生什么呢?
发布于 2018-10-04 00:43:26
当声明数组时没有指定任何大小,但使用初始化程序时,C会选择一个大小刚好足以容纳初始化程序指定的所有元素的大小。如果是你的话
char word\_0[] = "Hola que tal\n";
,即14个字符(其中包括一个用于字符串终止符的字符)。
发布于 2018-10-04 00:38:37
编译器自动选择大小。
发布于 2018-10-04 01:19:52
把“Ben”和“JohnBollinger”的答案结合起来,
char_word[] = "Hola que tal\n"语句向编译器指示将根据字符串文本或"Hola que tal\n"初始化数组的大小。
因此,在这种情况下,编译器会说char_word[]的声明等同于char_word[14]。
https://stackoverflow.com/questions/52637408
复制相似问题