永发信息网

给指针字符串赋值会出现段错误

答案:5  悬赏:70  手机版
解决时间 2021-01-22 16:51
  • 提问者网友:骑士
  • 2021-01-22 02:24
#include

int main()
{
char *s = "sdfsdf";
s[0] = 'a';

return 0;
}
为何会出现段错误,运行到s[0] = 'a';的时候?
最佳答案
  • 五星知识达人网友:神的生死簿
  • 2021-01-22 03:45
char *s = "dsfsdf" s 指向字符串常量区的字符串 而s[0] = 'a' 试图修改常量区的东西 当然会报错了 因为是不可修改的 如二楼所说 char s[] = "sdfsdf“ s[0] = 'a'; 这样可以是因为你是在栈上开辟了一块空间 并将常量区的字符串拷贝了一份存放到了栈中的数组当中 这时候修改就是可以的了
全部回答
  • 1楼网友:街头电车
  • 2021-01-22 08:26
2楼说的对
  • 2楼网友:行路难
  • 2021-01-22 08:00
2楼说的对,,听我 准没错~~ 顺便 说下1楼 湿主 你菜了。。。。。。。。
  • 3楼网友:千杯敬自由
  • 2021-01-22 06:51
char s[] = "sdfsdf"; s[0] = 'a';
  • 4楼网友:孤独入客枕
  • 2021-01-22 05:14
child[0] = creat_child();//问题就在这里。段错误 —— 这个语句本身没有问题,可能问题出在creat_child函数体中: process *child; child->pid = fork(); // 此时指针child没有指向任何对象(野指针),为其所指对象的成员赋值是不妥的。在这两个语句之间增加一个为child分配内存的语句试试,即: process *child; child=(process *)malloc(sizeof(process)); child->pid = fork();
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯