这函数.麻烦给我解释下.只有3行.
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/12 17:11:02
这函数.麻烦给我解释下.只有3行.
void fun(char* dest,char* s1,char* s2)
{
while (*dest++=*s1++);
dest--;
while (*dest++=*s2++);
}
麻烦各位高手帮小弟解释下这函数.为啥可以将s1,s2合并起来再放到dest上.郁闷中.
main()
{
char *dest;
dest=(char *)malloc(sizeof(char));
char* s1="Happy ";
char* s2="New Year";
fun(dest,s1,s2);
printf("%s\n",dest);
}
就是这样.
不是这样啦.
while (*dest++=*s1++);
while (*dest++=*s2++);
这两句.取值后++?
void fun(char* dest,char* s1,char* s2)
{
while (*dest++=*s1++);
dest--;
while (*dest++=*s2++);
}
麻烦各位高手帮小弟解释下这函数.为啥可以将s1,s2合并起来再放到dest上.郁闷中.
main()
{
char *dest;
dest=(char *)malloc(sizeof(char));
char* s1="Happy ";
char* s2="New Year";
fun(dest,s1,s2);
printf("%s\n",dest);
}
就是这样.
不是这样啦.
while (*dest++=*s1++);
while (*dest++=*s2++);
这两句.取值后++?
这个函数的作用就是把字串s1 s2 合成一个字串dest.
分天写就是
void fun(char* dest,char* s1,char* s2)
{
while(*s1){
*dest=*s1;
dest++;
s1++;
}
dest--;/*这句的作用是因为当*S1为字串结尾时dest己指向后一个,所以要后退一字节*/
while(*s2){
*dest=*s2;
dest++;
s2++;
}
}
问题补充:不是这样啦.我是不明白
while (*dest++=*s1++);
while (*dest++=*s2++);
这两句.取值后++?
这就相当于我上面说的,因是后置++,所以是先赋值,再执行++.
while(*dest=*s1){
dest++;
s1++;
}
while(*dest=*s1)只有在字串s1没结束时才成立进行循环
分天写就是
void fun(char* dest,char* s1,char* s2)
{
while(*s1){
*dest=*s1;
dest++;
s1++;
}
dest--;/*这句的作用是因为当*S1为字串结尾时dest己指向后一个,所以要后退一字节*/
while(*s2){
*dest=*s2;
dest++;
s2++;
}
}
问题补充:不是这样啦.我是不明白
while (*dest++=*s1++);
while (*dest++=*s2++);
这两句.取值后++?
这就相当于我上面说的,因是后置++,所以是先赋值,再执行++.
while(*dest=*s1){
dest++;
s1++;
}
while(*dest=*s1)只有在字串s1没结束时才成立进行循环