读书人

字符拷贝函数while(*p1++)与while(*++

发布时间: 2012-03-21 13:33:14 作者: rapoo

字符拷贝函数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'

读书人网 >C语言

热点推荐