while(*p1) p1++; while(*p2) { *p1=*p2; p1++; p2++; } *p1=0; 这个怎么理解啊??

2025-06-23 02:37:19
推荐回答(3个)
回答1:

void fun(char p1[], char p2[])
{
while(*p1) p1++;
while(*p2)
{
*p1=*p2;
p1++;
p2++;
}
*p1=0;
//我认为这里写错了,应该是*p1 = '\0' 在字符串p1尾部加上字符串结束标志
}

这个函数的功能是连接字符串

while(*p1) //检查字符串p1是否为'\0',即到了字符串的结尾处
p1++; //如果不是的话,p1指向下一个字符

while(*p2) //检查字符串p2是否为'\0',即到了字符串的结尾处
{
*p1=*p2; //将p2的值连接到p1的最尾处
p1++; //p1指向下一个字符
p2++; //p2指向下一个字符
}

*p1='\0'; //为字符串p1加上'\0'字符串结束的标志
如果是p1 = 0; //打印出p1字符串的值的时候,会显示很多'烫'

如果楼主有不明白的地方,可以追问

回答2:

首先明确两点:
1.p1,p2为指针变量,里面存放的是地址
2.*p1,*p2分别代表p1,p2指向的内存单元的内容
while(*p1)
p1++;

这里的*p1代表p1指向的内存单元的字符
等价于while(*p1 != '\0')
p1++,指向与它 相邻 的下一个存储单元

回答3:

p1++的意思就是变量p1自加1,也就是自增1