小编its*_*leb的帖子

C问题中的字符串操作

可能重复:
为什么简单的C代码会收到分段错误?

嘿大家,我确定这是一个非常基本的问题,但显然我在这里并不是很了解.

在寒假期间,我一直在和C玩弄很多东西,只是遇到了一些我觉得可行的东西,却给了我一个分段错误.

如果我将字符串声明为:char name [5] ="Mike"; 我可以操纵字符串:*(name + 1)='a'; 这很好用,名字变成"Make".

如果我声明为:char*name ="Mike"; 然后尝试相同的事情:*(name + 1)='a'; 我遇到了分段错误.为什么我不能这样做?

如果我malloc空格的字符串:char*name =(char*)malloc(5*sizeof(char)); 然后将字符串复制到name:strcpy(name,"Mike"); 我可以像上面那样操纵它就好了.*(name + 1)='a'; 作品.

char*name ="Mike"'和char*name =(char*)malloc(5*sizeof(char))之间有什么区别; 的strcpy(姓名, "迈克");? 它们不只是指向包含字符串的内存吗?

抱歉,这是一个noobish问题!

c string pointers

3
推荐指数
1
解决办法
901
查看次数

标签 统计

c ×1

pointers ×1

string ×1