为什么运行错误?

来源:百度知道 编辑:UC知道 时间:2024/09/23 04:06:09
#include "stdio.h"
void main()
{
char *s1="b";
char *s2="a";
*s1=*s2;
}
运行时,弹出对话框说遇到问题需要关闭,为什么? *s1=*s2;不能赋值吗?

*s1=*s2;的效果就是b=a;能把a赋值给b吗。常量不能做赋值操作,你可以s1=s2;这样*s1就是a了

当然不能啦,他们其实是常量啊,它们的内存区域和这个是不同的:
char sz[] ={"a"}

常量是啥?常量就是8可以改变的,你非要访问不可以访问的地方,系统会怎么样呢?

系统会告诉你,你丫头乱摸啥?系统是女滴。(*^__^*) 嘻嘻……

要先用malloc语句分配空间。

当我们定义指针变量时,其实还没有分配空间,而定义其他变量时,定义的时候就会分配空间,这是指针变量的特色。

如果你不分配空间的话,指针变量就不知道指到哪了,很有可能指向很重要的数据,这是很危险的。所以推荐用数组存储字符串。

当然运气好的话,可能不会有任何问题,但咱们要的是严谨,所以你就改一下吧