返回信息流vs2005下编译运行.
简单的复制字符串的小程序:
#include<iostream>
using namespace std;
char* myStrcpy(char* s1,const char* s2);
int main()
{
char s1[50]="test";
char* s2="Hello";
cout<<"s2="<<s2<<endl;
cout<<"s1="<<myStrcpy(s1,s2)<<endl;
}
char* myStrcpy(char* s1,const char* s2)
{
char* s=s1;
while(*s++=*s2++);
return s1;
}//不明白这里为什么要把传递进来的s1赋给s再返回,结果正确,s1被赋值为Hello
如果将上面的函数myStrcpy改成
char* myStrcpy(char* s1,const char* s2)
{
while(*s1++=*s2++);
return s1;
}//这样s1的结果就是空字符串
请问这是为什么啊?还请大家指教!
这是一条镜像帖。来源:北邮人论坛 / cpp / #18795同步于 2009/1/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于传递字符串指针
yefans
2009/1/20镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
指针和数组名的区别之一
【 在 yefans 的大作中提到: 】
: vs2005下编译运行.
: 简单的复制字符串的小程序:
: #include<iostream>
: ...................
因为s1指针已经变了,指到字符串的末尾了
【 在 yefans (低调的狼1) 的大作中提到: 】
: vs2005下编译运行.
: 简单的复制字符串的小程序:
: #include<iostream>
: ...................
S1不是指向S2的结尾吧,应该是S2的结尾之后的一个字节,内容是不确定的。
【 在 newstar19870 (miemie) 的大作中提到: 】
: 第二个函数 你对S1修改了,不再指向原来的位置 而是指向S2的结尾\0,为空