一段C程序为什么出错

来源:百度知道 编辑:UC知道 时间:2024/06/22 12:17:43
#include "iostream"
using namespace std;
int main()
{
void copy_string(char *from,char *to);
char *a="I am a teacher.";
char *b="you are a student.";
cout<<"原来的a:"<<a<<endl<<"原来的b:"<<b<<endl;
copy_string(a,b);
cout<<"现在的b是:"<<b<<endl;
return 0;
}
void copy_string(char *from,char *to)
{
for(;*from!='\0';from++,to++)
*to=*from;
*to='\0';
}

from是a的内存地址,但是from+1这个内存区域你并没有声明,直接使用会导致访问越界
#include "iostream"
using namespace std;

#include "iostream"
using namespace std;
int main()
{
void copy_string(char *from,char *to);
char a[]="I am a teacher.";
char b[]="you are a student.";
cout<<"原来的a:"<<a<<endl<<"原来的b:"<<b<<endl;
copy_string(a,b);
cout<<"现在的b是:"<<b<<endl;
return 0;
}
void copy_string(char *from,char *to)
{
for(;*from!='\0';from++,to++)
*to=*from;
*to='\0';
}

这样就可以了

字符串指针初始化以后是个常量。
字符数组a的长度小于字符数组b的长度,b给a赋值的时候发生了越界错误