从C中的函数返回常量字符串

从C中的函数返回常量字符串,c,string,function,C,String,Function,我有以下代码: const char * func_journey () { const char * manner = "Hello"; manner = "World"; return manner; } int main() { const char * Temp; Temp = func_journey(); return 0; } 我在debug中运行它只是为了看看会发生什么,不知何故,方式从“Hello”变

我有以下代码:

const char * func_journey ()
{
    const char * manner = "Hello";

    manner = "World";

    return manner;

 }

 int main()
 {

     const char * Temp;

     Temp = func_journey();

     return 0;
 }
我在debug中运行它只是为了看看会发生什么,不知何故,方式从“Hello”变为“World”,指针也变了,即使我声明它是常量

另一件事是,在运行结束时,Temp是“World”,现在怎么可能呢?方式是func_旅程中的一个自动变量,它是否应该在最后被销毁

非常感谢

我在debug中运行它只是为了看看发生了什么,不知怎么的,方式从“Hello”变成了“World”

这正是您的代码告诉它要做的,所以它按照您的要求做也就不足为奇了

指针也发生了变化,即使我声明它是一个
const

您声明它是指向
const
的指针,而不是
const
指针(我知道,这听起来可能很混乱)。当您编写
const char*
时,它意味着指向的是
const
。如果要说指针本身是常量,则需要

char * const manner = "Hello";

您的问题的答案分为两部分: 1) 您已经声明了指向“const”的指针,而不是“const”指针(我想这是您想要的)。
2) 为“Hello”和“World”分配的内存不在函数func_本地堆栈中,而是在全局只读内存位置(查看如何分配字符串文字)。如果您声明使用字符数组,则不会将“World”复制回Temp。

方式
是指向
常量字符
的指针,如果您希望指针也是
常量
指针,则需要
常量字符*常量
。从常见问题解答:(不太确定)c中的字符串是在第一个字符处带有引用的数组。。在所有初始化操作中,您都会将引用(指针)更改为另一个引用..是的,这正是发生的情况,指针已更改为预初始化字符串(“世界”)。哦。。。你比我快了20秒。而且,你应该读这篇文章,内容非常丰富: