1sun15718 发表于 2020-6-10 09:48:10

strcmp函数比较两个不同地址为什么也是0呢?

#include<stdio.h>

#include<string.h>

int main(){



char a[]="aa";

char b[]="aa";

printf("%p\n",strcmp(&a,&b));

printf("%d\t%d",&a,&b);

return 0;

}

地址明显不一样,但是为什么输出还是0呢?求助各位大佬

wp231957 发表于 2020-6-10 10:27:24

地址指向相同

sunrise085 发表于 2020-6-10 10:37:25

本帖最后由 sunrise085 于 2020-6-10 10:38 编辑

strcmp是比较两个字符串大小的,传入的参数是字符串的名字,也就是字符串的首地址。
你传入的是两个char数组的首地址,也就是两个字符串的首地址了。
strcmp(&a,&b)   和   strcmp(a,b)效果是一样的。
两个字符串内容是一样的,所以返回值就是0了。

1sun15718 发表于 2020-6-10 11:16:20

sunrise085 发表于 2020-6-10 10:37
strcmp是比较两个字符串大小的,传入的参数是字符串的名字,也就是字符串的首地址。
你传入的是两个char数 ...

哦哦,懂了,谢谢,刚才没转过来这个劲
页: [1]
查看完整版本: strcmp函数比较两个不同地址为什么也是0呢?