为什么p1比p2大?怎么比较的

发布网友 发布时间:2022-04-20 06:42

我来回答

4个回答

热心网友 时间:2023-08-04 20:32

你这样是比较存储p1及p2的地址的大小,与你想要的结果不符合的。
可以改写下函数
int MaxStr(char* p1,char* p2)
{
while(*p1)
{
if(*p1>*p2)
return *p1-*p2 ;
else
if(*p1<*p2)
return *p1-*p2;
else
{
p1++;
p2++;
}
}
return *p1-*p2
}

根据返回值为正负或0来判断p1 p2 的大小。
返回值为正:p1>p2
负:p1<p2
零:p1=p2

热心网友 时间:2023-08-04 20:33

你的错误在于。你比较是两个指针的地址,可能p1的地址比p2小,这样你不管怎么改都是输出p2
我帮你写了一个,你可以参考下
void max(char *p1, char* p2)
{
char *buff1 = p1;
char *buff2 = p2;
while((*p1 != '\0') || (*p2 != '\0'))
{
if(*p1 > *p2){
cout << buff1;
return;
}
else if(*p1 < *p2){
cout << buff2;
return;
}
else{
p1++;
p2++;
}
}
}
int main(void)
{
char p1[] = "abc";
char p2[] = "abcdds";
max(p1, p2);
return 0;
}

热心网友 时间:2023-08-04 20:33

比较的是地址,因为在ccc在aa之后,所以p2地址大。
你写的程序有问题。应该不是比较地址的。
可以用strcmp()函数。

热心网友 时间:2023-08-04 20:34

你比较的是地址 p1\p2追问如果char *p1,*p2=p1;
如果比较的话就是怎么样也相等了?

追答是的

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com