【发布时间】:2013-06-18 19:04:56
【问题描述】:
我有以下代码:
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 是“世界”,现在怎么可能?方式是func_journey中的一个自动变量,它不应该在最后被销毁吗?
非常感谢。
【问题讨论】:
-
manner是指向const char的指针,如果您希望指针也为const指针,则需要const char * const。 -
来自常见问题解答:stackoverflow.com/questions/890535/…
-
(不太确定)c 中的字符串是在第一个字符处具有引用的数组 .. 在所有初始化中,您将引用(指针)更改为另一个 ..
-
是的,这正是发生的事情,指针被更改为已经预先初始化的字符串(“World”)。