大家帮忙看看这个程序问题在哪?
#include<stdio.h>
void copy_string(char *from, char *to)
{
for(;*from!='\0';from++,to++)
*to=*from;
*to='\0';
}
main()
{
char *a="I am a teacher.";
char *b="I am a student.";
printf("%s\n%s\n",a,b);
copy_string(a,b);
printf("%s\n%s\n",a,b);
}
输出结果:
I am a teacher.
I am a student.
并且弹出以下窗口:XX.exe-应用程序错误
"0x0040105e"指令引用的"0x00422024"内存。该内存不能为"written"。
[解决办法]
char *a="I am a teacher.";
char *b="I am a student.";
a 和 b 存放在只读区域,不能被修改
可以改为数组
[解决办法]
char *a="I am a teacher.";
"I am a teacher.";是文本字符串常量。
存入内存后它就算是常量了,因为已经使用一个non-const pointer to char指向它了。就不可以改变了