gpt4 book ai didi

c - 是否应该使用 C 中的文字初始化具有指定大小的静态声明的字符数组?

转载 作者:行者123 更新时间:2023-12-01 14:18:55 25 4
gpt4 key购买 nike

例如,

gcc 编译这个 ok...

char s[7] = "abc";

但它给出错误“赋值中的类型不兼容”...

char s[7];
s = "abc";

有什么区别?

最佳答案

第一个是初始化;这意味着“在堆栈上声明一个包含 7 个 char 的数组,并用 'a''b''c',其余元素为'\0'”。

在第二个中,您没有将数组初始化为任何东西。然后你试图分配给数组,这是永远无效的。像这样的东西会“起作用”:

const char *s;
s = "abc";

但含义会略有不同(s 现在是一个指针,而不是一个数组)。在大多数情况下,差异很小。但是有几个重要的注意事项,例如您不能修改内容。此外,sizeof(s) 会给您一个指针的大小,而在您的原始代码中,它会给您 7(数组的大小)。

推荐阅读是这样的:http://c-faq.com/charstring/index.html .

关于c - 是否应该使用 C 中的文字初始化具有指定大小的静态声明的字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4823352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com