给指针字符串赋值会出现段错误
答案: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();
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯