/* Note: I've formatted the code for readability. */
const char * getString() {
const char *x = "abcstring";
return x;
}
我惊讶地发现返回一个指向文字字符串的指针是有效的,并且没有像我想象的那样发生段错误。我一直认为文字被推入堆栈或放入其他一些临时内存,但仅限于函数的范围。但在这里,它们似乎比我想象的更静态。然后将它们放入对整个可执行文件全局的某种字符串池中吗?
另外,如果我将字符串文字作为参数传递给函数,是否也是同样的事情?例如:
/* Where is the string literal in this example being placed? */
myfunc(value1, value2, "rainbowdash");
我希望有人能启发我。提前致谢!:)