注册 登录
编程论坛 C++教室

实在想不通一个问题!求助~

gshyhang 发布于 2008-03-14 02:59, 553 次点击
在strcpy函数中的两个指针已经改变了,为什么在主函数中仍然可以输出原来指向的字符串?
void strcpy(const char* s1,char* s2)//把s1里的字符串复制到s2中
{
   while(*s2++=*s1++);
}
int main()
{
  char s2[10];
  char* s1="12132";
  strcpy(s1,s2);
  cout<<s1<<endl<<s2<<endl;//仍然输出12132
  return 0;                          12132
}
按理说s1已经在strcpy中改变了,为什么还能输出原来指向的值呢?
3 回复
#2
aipb20072008-03-14 09:37
此s1非彼s1,函数调用有个值拷贝,所以函数中的s1不过是实际参数的副本,当谈就没又改变实际参数。
#3
sunkaidong2008-03-14 10:04
实参和形参同名字而已#include<iostream.h>
void strcpy(const char* p,char* p1)//把s1里的字符串复制到s2中
{
   while(*p1++=*p++);
}
int main()
{
  char s2[10];
  char* s1="12132";
  strcpy(s1,s2);
  cout<<s1<<endl<<s2<<endl;//仍然输出12132
  return 0;                        //  12132
}
仅仅表示两组不同的指针指向同两个内存而已..没有关联性...但是由于一组指针对内存修改了..所以另外一组读到的值是变化的
#4
xianshizhe1112008-03-14 11:30
*s1的值没有其它的值去改变它.
1