char* 变量可以指向一个字符串(写在源代码中)吗?
只要不超过它的长度,我可以操纵/修改为文字字符串分配的空间吗?
就我了解的可执行文件的格式而言,这很好,但我想确定一下。谢谢 :)
最佳答案
取决于您的运行时特征,但一般来说,执行以下操作:
char *s = "a literal string";
s[3] = 'q';
将编译,但在运行时不起作用。在这种情况下,文字字符串通常位于可执行文件的只读部分。但是,以下示例将起作用:
char s[] = "a literal string";
s[3] = 'q';
在这种情况下,文字字符串是堆栈上数组 (
s
) 的初始值设定项。所以你的第一个问题的答案是"is",你的第二个问题的答案是“可能”。这两个示例之间存在语义差异。第一个创建一个指向文字字符串的指针,第二个创建一个数组并使用文字字符串的内容对其进行初始化。
关于指向文字字符串(在源代码中硬连线)的 char* 可以吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2066793/