将局部变量初始化为数据段字符串

时间:2015-03-15 14:14:46

标签: c string initialization

c 中,我们假设我有以下代码:

int func(){
 char* s = "bla";
}

我不确定这是什么编译的。 由于s不是静态的,因此在func()结束后它不会生存,因此似乎指向" bla"迷路了。 另一方面,该程序仍然应该知道" bla"因此,下次func()被调用时,s将获得相同的地址。

我想知道上面的代码是否正常,或者我是否必须将s声明为静态?

1 个答案:

答案 0 :(得分:0)

目前尚不清楚如何使用此本地指针。然而,字符串文字的地址将是相同的。它不取决于函数被调用的次数。此字符串文字具有静态存储持续时间。因此,每当函数获得控件时,指针将使用相同的地址进行初始化。除非您更改其初始值并希望它将存储在函数调用之间的指针中,否则无需将指针本身声明为静态。