首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >char word[] vs char word[5]

char word[] vs char word[5]
EN

Stack Overflow用户
提问于 2018-10-04 00:37:34
回答 3查看 688关注 0票数 0

我很难找到这样做的原因,因为我正在复习的书告诉我要初始化数组的大小,但是,这是编译的。

代码语言:javascript
复制
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 = ?)会发生什么呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-04 00:43:26

当声明数组时没有指定任何大小,但使用初始化程序时,C会选择一个大小刚好足以容纳初始化程序指定的所有元素的大小。如果是你的话

char word\_0[] = "Hola que tal\n";

,即14个字符(其中包括一个用于字符串终止符的字符)。

票数 3
EN

Stack Overflow用户

发布于 2018-10-04 00:38:37

编译器自动选择大小。

票数 2
EN

Stack Overflow用户

发布于 2018-10-04 01:19:52

把“Ben”和“JohnBollinger”的答案结合起来,

char_word[] = "Hola que tal\n"语句向编译器指示将根据字符串文本或"Hola que tal\n"初始化数组的大小。

因此,在这种情况下,编译器会说char_word[]的声明等同于char_word[14]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52637408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档