关于C 编程的简单问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 18:01:13
我学习谭浩强的c,有个例子是这样的:
cpystr(char *pss,char *pds){
while((*pds=*pss)!='\0'){
pds++;
pss++; }
}
void Test_test()
{
char *pa="i love you!",b[15],*pb;
int i;
pb=b;
cpystr(pa,pb);
printf("string a=%s\nstring b=%s\n",pa,pb);

}
这样的运行结果是string a=i love!string b=i love!
但我把程序改成
void Test_test()
{
char *pa="i love you!",b[15],*pb;
int i;
pb=b;
while((*pb=*pa)!='\0')
{
pb++;
pa++;

}
printf("string a=%s\nstring b=%s\n",pa,pb);

}
运行结果只显示sting a=
string b=
什么都不显示,不知道我错在哪里,望指教

pa和pb这两个指针经过pa++和pb++都指到字符串最后去了,当然不显示了啊。
所以谭浩强那个例子,最后会有pb=b; cpystr(pa,pb);

因为你的pa和pb都已经被改变了,不再是原来的pa和pb了

而函数中的pss和pds是局部变量,其值的改变不影响实参pa和pb