A:
char *p1; //成功
char p2[20];
p1 = "String A";
strcpy(p2,p1);
b:
char *p1; //出错
char *p2;
p1 = "String A";
strcpy(p2,p1);
是因为没给p2分配内存空间吗?不能动态自动分配吗?
如果是的话,怎么写面子和样也不能成功呢?
c: //出错
char *p1;
char *p2;
p1 = "String A";
p2 = "String B";
strcpy(p2,p1);
printf("%s/n",p1);
printf("%s/n",p2);
请帮我分析一下错误的原因吧,弄的很糊涂
谢谢
---------------------------------------------------------------
strcpy( char* dest, char* source);
//将source字符串拷贝之dest中,dest需要>=source字符串空间才可以
b:
char *p1; //出错
char *p2;
p1 = "String A";
strcpy(p2,p1); 。//p2无空间出错
//后面p3 = "赋值"; 之后没错是开辟了空间 但是const常量p3指向空间是不可改变其内容的
//所以你企图改变就报错
---------------------------------------------------------------
你对b的理解正确,不会自动分配的。p2是野指针。
---------------------------------------------------------------
其实strcpy不会对空间是否分配进行判断。
其实,楼主程序出错的原因都是地址空间内的值能否被改变的问题。
b:
因为char *p2;未初始化,所以他指向的地址一般是无效的,而且很多情况是指向系统区,你不能去改变它指向的值。
c:
就是楼上所说的道理了。
strcpy引发的疑问(一)
最新推荐文章于 2022-11-25 20:23:40 发布