上面代码中 *p1 && *p2 && *p1 == *p2 是什么意思?
时间: 2023-07-23 19:46:32 浏览: 94
这段代码是在第二个循环中用来判断两个字符是否相等的条件语句。
其中,`*p1` 表示指针 `p1` 所指向的字符是否存在,如果为真(即不为 '\0'),则继续判断后面的条件。
`*p2` 同理,表示指针 `p2` 所指向的字符是否存在。
`*p1 == *p2` 表示指针 `p1` 和 `p2` 所指向的字符是否相等。
如果这三个条件都满足,则说明指针 `p1` 和 `p2` 所指向的字符相等,可以继续比较下一个字符。否则,退出循环,继续在第一个字符串中寻找下一个可能的匹配位置。
相关问题
while (*p1 && *p2 && (*p1 == *p2))
这是一个 C 语言中的 while 循环语句,它的条件部分是一个逻辑表达式。在这个表达式中,使用了逻辑与运算符 &&,它的含义是“与”,只有当两个操作数都为真时,整个表达式的值才为真。
在这个表达式中,有三个操作数,它们分别是 *p1、*p2 和 (*p1 == *p2)。其中,*p1 和 *p2 都是指针变量,它们分别指向两个字符串中的字符。而 (*p1 == *p2) 是一个比较表达式,它判断两个字符是否相等。
因此,整个表达式的含义是:只要 *p1 和 *p2 指向的字符都不为空,并且它们指向的字符相等,就执行循环体中的代码。
char mycmp(char *p1, char *p2) while(*p1&&*p2 &&*p1==*p2) p1++,p2++; return *p1-*p2_; }
这是一个比较两个字符串的函数,函数名为mycmp,接收两个char类型的指针p1和p2作为参数。函数中使用while循环比较两个指针所指向的字符是否相等,如果相等则继续比较下一个字符,直到其中一个指针指向了字符串的结尾或者两个指针所指向的字符不相等为止。最后返回两个指针所指向的字符的ASCII码之差。需要注意的是,在函数中返回值应该是int类型而不是char类型。
```c
int mycmp(char *p1, char *p2){
while(*p1 && *p2 && *p1 == *p2){
p1++;
p2++;
}
return *p1 - *p2;
}
```