C语言字符串数组可以修改吗?
不可以。当您在源代码中编写“String”时,它将直接写入可执行文件中,因为该值需要在编译时知道(有工具可以将软件分开并找到其中的所有纯文本字符串)。
当你写char *a = "This is a string",“这是字符串”的位置在可执行文件中,而指向的位置在可执行文件中。可执行映像中的数据是只读的。
您需要做的(如其他答案所指出的)是在堆上或堆栈帧上的位置创建该内存。
如果声明一个本地数组,则在堆栈上为该数组的每个元素创建空格,并将字符串文字(存储在可执行文件中)复制到堆栈中的该空间。