c - 无法修改c中堆栈上的字符串

标签 c string stack

Possible Duplicate:
Why does char* cause undefined behaviour while char[] doesn’t?

以下代码

int main() {
  char * st = "abc";
  *st = 'z';
  return 0;
}

返回段错误。如果堆栈上的字符串不可修改,为什么它在编译时没有给出错误?

最佳答案

堆栈上的变量 st 是一个指针。分配的值是一个字符串常量(只读)。

关于c - 无法修改c中堆栈上的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14015575/

相关文章:

c++ - 在 C++ 中,如何将静态数组作为参数传递给对象,并在其中修改原始数组?

macos - 这个汇编函数序言/尾声代码对 rbp/rsp/leave 有什么作用?

C-修复递归中的堆栈溢出

c# - 想要从字符串参数中获取 xml 值

java - 验证字符串是否为整数 (numberFormatException)

指针取消引用符号 * 可以称为 "many"吗?

c - 使用 Makefile 链接多个文件

c - 访问字符串元素困惑

c - 需要制作一个非常大的数组 [2^16+1][2^16+1] - 数组的大小太大 :(

c++ - Windows 线程创建期间的内存管理