一个指针的问题,请看看那里出错了,谢谢~~

来源:百度知道 编辑:UC知道 时间:2024/05/11 18:07:08
作用是把b复制为a
#include <stdio.h>
void copy_string(char *from,char *to)
{
for(;*from!='\0';from++,to++)
*to=*from;
*to='\0';
}
void main()
{
char *a="i am a boy!";
char *b="i am a good girl!";
printf("string a=%s\nstring b=%s\n",a,b);
copy_string(a,b);
printf("\nstring a=%s\nstring b=%s\n",a,b);
}

内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。

char *a="i am a boy!";
char *b="i am a good girl!";

你这里的字符串分配在常量存储区,是只读的,,你的copy_string函数对两个只读的数据进行了更改,

改成这样的:
char a[]="i am a boy!";
char b[]="i am a good girl!";

答案是正确的!!
运行结果:
string a=i am a boy!
string b=i am a good girl!

string a=i am a boy!
string b=i am a boy!

去掉*to='\0';