【发布时间】:2015-10-25 04:17:21
【问题描述】:
在 C 语言中,我们可以使用 char * 来指向一个字符串。就像
char *s = "Hello";
.
可以看出,变量既不是动态位于堆上的,因为没有任何像 malloc 这样的动态函数,也没有定义为指向某个其他变量。
所以我的问题是,变量 [char *s] 指向的文字字符串在哪里进行逻辑存储?
它是否像任何普通的局部变量一样存储在堆栈中?或者,类似堆栈的东西?
其实我是计算机工程系的毕业生,但是我一直没有发现,也一直很好奇[char * string]是如何逻辑工作的。很荣幸现在就问这个问题。
【问题讨论】:
-
存储在文本段中
-
@RaghuSrikanthReddy 不一定。许多平台将字符串文字放在
rodata部分。 -
@MaggiePhillips 你真的需要澄清你的问题主体。
s的存储位置和它指向 的存储位置可能完全不同,您可能会得到关于这两者的少量答案,其中大部分是关于s的推测性答案,因为您没有显示它存在的上下文。 (全局、本地、静态本地??)。 -
@WhozCraig 你说得对,我当然需要将变量 s 和字符串位置相除。我真正好奇的是文字字符串“Hello”的位置。谢谢。
标签: c string pointers char stack