为什么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;
如果比较的话就是怎么样也相等了?
追答是的