c语言用==比较式是比较指针大小码

如题所述

1、字符串比较用等号的话实际比较的是指针。例如:

char *p1="a";
char *p2="b";
if(p1==p2)
{
.........
}
比较p1和p2吧,这个比较实际上比较的是指针大小,也就是"a"、"b"这两个字符串首地址的大小

如果要比较字符串大小可以使用strcmp函数

2、例程:

int main()
{
 char *p = "x",s[] = "x";
 printf("%d\n","x"=="f"); //二者地址不同,所以是0
 printf("%d\n","x"=="x"); //p指向字符串常量"x",以及程序中出现"x"常量的地方发生了常量折叠,所以该句与下一句比较的地址相同
 printf("%d\n",p=="x");
 printf("%d\n",s=="x");  //s是字符串数组,地址与字符串常量"x"地址不同
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-28
字符串比较用等号的话实际比较的是指针
int main()
{
char *p = "x",s[] = "x";
printf("%d\n","x"=="f"); //二者地址不同,所以是0
printf("%d\n","x"=="x"); //p指向字符串常量"x",以及程序中出现"x"常量的地方发生了常量折叠,所以该句与下一句比较的地址相同
printf("%d\n",p=="x");
printf("%d\n",s=="x"); //s是字符串数组,地址与字符串常量"x"地址不同
}本回答被提问者采纳
第2个回答  2012-07-11
==是比较数值的。指针的大小有什么好比的。。。一般是比较指针指向的值的大小
第3个回答  2012-07-11
你的提问能不能详细点,我猜测你的意思是
char *p1="a";
char *p2="b";
if(p1==p2)
{
.........
}
比较p1和p2吧,这个比较实际上比较的是指针大小,也就是"a"、"b"这两个字符串首地址的大小
如果要比较字符串大小可以使用strcmp函数
希望能帮到你!追问

就是用==号比较字符串大小,是比较指针大小码

追答

不是比较字符串的大小,字符串在内存中的分布和字符数组一样,指针的大小只是字符串首字符在内存中的地址值,也就是说指针的大小就是字符串首地址的值
void main()
{
char *p1="a";
char *p2="b";
printf("p1:%x\np2:%x\n",p1,p2);
}
这样你就能看到这两个地址的值了

本回答被网友采纳
第4个回答  2012-07-11
表示指针函数追问

就是用==号比较字符串大小,是比较指针大小码

相似回答