void strCpy(char *s1,char *s2)
{
while(*s1++=*s2++);
}
我开始对while循环里面的那个结束条件有些迷惑,最后通过程序调试找到了答案。此函数的目的将s2指向的字符串复制到s1中,此结束条件是s2指向的字符串全部被复制完了,while就结束了(前提是s1指向的空间能够容纳s2指向的字符),而不是遇到'\0'结束,这里面是一个赋值语句,'\0'也被赋值过去了,所以最后也不需要补充'\0'了。
#include<iostream>
using namespace std;
void strCpy(char *s1,char *s2)
{
while(*s1++=*s2++)
{
printf("%d\n",*s2);
}
}
int main()
{
char s1[20]="haha";
char s2[20]="hehe";
strCpy(s1,s2);
cout<<s1<<endl;
return 0;
}
打印:97
104
97
0
haha
'\0'用%d打印出来是0,则'\0'也被复制了。类似while(str[i])当str[i]='\0'时,对应int是0,while循环也就结束了。