一个 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/