char* 指向文字字符串(在源代码中硬连线)可以吗?

标签 c

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

相关文章:

c - 写入分配的字符缓冲区

c - Valgrind 报告无效的 Realloc

c - 为什么我的语言抽认卡程序仅仅因为一个 if 语句就崩溃了?

c - (posix)消息队列有读写器原理吗?

在 C 中编译 Tesseract OCR

C:正则表达式优化 |保存状态

c - 替代终端的 Bison/Flex 打印值

c++ - 理解c函数指针

c - 将 0 表示为 gnss 坐标的负数

c - 错误: identifier "CLOCK_PER_SEC" is undefined