c - 在 c 中操作 char*

标签 c

<分区>

这是我的程序,当我尝试执行 s[0] = s[1] 时出现段错误。 我不明白为什么这行不通,因为我所做的只是获取 s[1] 中的值并将其放入 s[0]。

#include<stdio.h>

void main() {
  char x;
  char *s="stackoverflow";

  s[0] = s[1];  // it is segfaulting here 
  x = s[0];  //this works though 
  printf("this is: %s\n",s);
}

我正在使用 gcc filename.c 进行编译,并在 ubuntu 终端中使用 ./a.out 运行它。

谢谢。

最佳答案

当您执行:char *s="stackoverflow"; 时,s 是指向代码部分内存的指针,因此您无法更改它。因为它是只读的,所以你会在运行时遇到段错误(如果你使用 const 关键字,你会得到一个编译错误,这更好。所以如果你不建议使用 const ' 想对字符串进行更改)。

如果您执行 char s[]="stackoverflow";,则 s 是堆栈上的字符数组,因此您可以更改它。

关于c - 在 c 中操作 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15393007/

相关文章:

c++ - 计算线段与trimesh交点的代码

将简单的 C 代码转换为 CUDA 代码

c - 即使绑定(bind)到给定端口的远程主机上的进程被终止,select()也会返回1

c - 关于C指针的两个问题

无论用户输入如何,将输入转换为 int

c - 如何重复 Scanf 并替换值?

c - 设置编译器包含 (-I) 和 c.vim 插件?

c - gets() 内部开关被忽略

c - 我不明白我是如何遇到段错误的

python - 为什么 NumPy.exp 显示的结果与 C 中的 exp 不同