我有以下代码:
const char * func_journey ()
{
const char * manner = "Hello";
manner = "World";
return manner;
}
int main()
{
const char * Temp;
Temp = func_journey();
return 0;
}
我在调试中运行它只是为了看看会发生什么,以某种方式从“Hello”变为“World”并且指针也发生了变化,即使我已将其声明为 const。
另一件事是,在运行结束时 Temp 是“World”,现在怎么可能呢? manner 是 func_journey 中的一个自动变量,它不应该在最后被销毁吗?
非常感谢。
最佳答案
I ran it in debug just to see what happens, somehow manner changed from "Hello" to "World"
这正是您的代码要求它执行的操作,因此它执行了您的要求也就不足为奇了。
and also the pointer changed even due I have declared it a
const
.
您将其声明为指向 const
的指针,而不是 const
指针(我知道,这听起来可能令人困惑)。当你写const char *
时,它意味着指向的是const
。如果要说指针本身是const
,则需要
char * const manner = "Hello";
关于c - 从 C 中的函数返回一个 const 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17176872/