gpt4 book ai didi

函数中的常量字符串 - 它们保存在哪里?

转载 作者:行者123 更新时间:2023-11-30 19:47:45 25 4
gpt4 key购买 nike

我有:

void func()
{
char *s;
strcpy(s,"bla bla");
}

“bla bla”是否存储在某处?即使我没有定义它,它也会被视为“const char *”吗?

最佳答案

字符串文字是无名数组对象,它们存储在静态内存中,即存储全局变量的同一内存。字符串文字永远存在:它们在程序开始时就存在,并且持续到程序结束(就像全局变量一样)。

但请注意,在您的代码示例中,“blah blah” 是字符串文字。但是您的 s 只是一个从字符串文字初始化(通过复制数据)的局部变量。您的 s 与任何其他局部变量具有相同的生命周期 - 只要控件通过 func,它就存在。

另请注意,C 中的字符串文字不被视为 const Chart *,正如您似乎错误地认为的那样。 C语言中的“blah blah”类型实际上是char[10]。数组类型可以衰减为指针类型,但即使在这种情况下,它也将是 char * 而不是 const char *

关于函数中的常量字符串 - 它们保存在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20588439/

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