当前位置:   article > 正文

c语言字符和字符串比较(STRCMP和==)_c语言字符比较

c语言字符比较

字符串比较

1.字符比较用==号,既可以用常量也可以用变量比较

  1. char a,b;   
  2. if(a==b)
  3.   {
  4.         printf("yes");
  5.   }

2.strcmp比较字符只能用常量,否则会报错

例如:

  1. char a,b;   
  2. if(strcmp(a,b)!=0)
  3.   {
  4.         printf("yes");
  5.   }

报错:error: invalid conversion from 'char' to 'const char*' [-fpermissive]|

3.字符可以直接用=号赋值

字符串比较

  1. int main()
  2. {
  3. char *str1="hello";
  4. char str2[]="hello";
  5. printf("%d\n",str1=="hello");
  6. printf("%d\n",str2=="hello");
  7. printf("%d\n",strcmp(str1,"hello"));
  8. printf("%d\n",strcmp(str2,"hello"));
  9. return 0;
  10. }
  11. 输出结果为1 0 0 0

1.字符串变量比较不能直接用==,但是可以用变量地址和字符串用==比较,如果地址相同,字符串会相等

char *str1 = “hello”;和”hello”的地址是相同的,所以返回结果相等

str2 == “hello”地址不相等。char str2[] = “hello”; 这里str2并不是指针,类型里已经说明它是一个数组,所以这会是另一个内存地址,于是str2与”hello”的地址是不同的。

综上:字符串的比较不能用==


2.字符串比较用strcmp函数

strcmp(str1,”hello”),strcmp(str2,”hello”)都是成立的
由于”hello”是字符串常量,编译器会进行优化:
所有的”hello”都是相同的,整个程序中只需要有一个”hello”字符串。

然后所有引用”hello”这个字符串的“指针变量”都赋值成相同的地址。
 

3.字符串赋值不能用=

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/594360
推荐阅读
相关标签
  

闽ICP备14008679号