字符拷贝函数while(*p1++)与while(*++p1)的区别
#include <stdio.h>
void copy(char *,char *);
int main(void)
{
char str1[40] = "hello",str2[40] = " world";
copy(str1,str2);
puts(str1);
}
void copy(char* p1,char* p2)
{
while (*++p1)// *p1++不只是将指针向后多移了一个位置吗?怎么就无法实现函数功能了?
;
while (*p1++ = *p2++)
;
}
[解决办法]
*p1++不只是将指针向后多移了一个位置吗?怎么就无法实现函数功能了?
char str1[40] = "hello"
内存 h e l l o 0 0 0 0 0 0
移动后
h e l l o 0 w o r l d
puts遇'\0'结束
[解决办法]
while(*p1++) ==> *(p1++) ==> 判断 *p1 是不是'\0',然后p1++
while(*++p1) ==> *(++p1) ==> 判断 *(p1+1) 是不是'\0'