gpt4 book ai didi

c - 在 C 语言中,是否可以像在 char 数组声明中初始化字符串一样在指针声明中初始化字符串?

转载 作者:太空狗 更新时间:2023-10-29 16:46:02 30 4
gpt4 key购买 nike

这两行代码是否达到相同的结果?如果我在一个函数中有这些行,那么在这两种情况下字符串都存储在堆栈中吗?除了不需要在第一行代码中声明 null 终止符之外,是否有充分的理由说明我应该使用一个而不是另一个?

char  s[] = "string";
char* s = "string\0";

最佳答案

不,这两行没有达到相同的结果。

char s[] = "string" 产生一个可修改的 7 字节数组,最初填充内容 's' 't' 'r' 'i' ' n' 'g' '\0'(全部在运行时从字符串文字复制过来)。

char *s = "string" 导致指向包含字符串文字“string”的一些只读内存的指针。

如果你想修改字符串的内容,那么第一个是唯一的方法。如果您只需要对字符串进行只读访问,那么第二个会稍微快一些,因为不必复制该字符串。


在这两种情况下,都不需要在字符串文字中指定空终止符。编译器会在遇到结束符 "时为您处理。

关于c - 在 C 语言中,是否可以像在 char 数组声明中初始化字符串一样在指针声明中初始化字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4051347/

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