赞
踩
1.字符比较用==号,既可以用常量也可以用变量比较
- char a,b;
- if(a==b)
- {
- printf("yes");
- }
2.strcmp比较字符只能用常量,否则会报错
例如:
- char a,b;
- if(strcmp(a,b)!=0)
- {
- printf("yes");
- }
报错:error: invalid conversion from 'char' to 'const char*' [-fpermissive]|
3.字符可以直接用=号赋值
- int main()
- {
- char *str1="hello";
- char str2[]="hello";
- printf("%d\n",str1=="hello");
- printf("%d\n",str2=="hello");
- printf("%d\n",strcmp(str1,"hello"));
- printf("%d\n",strcmp(str2,"hello"));
-
-
- return 0;
- }
- 输出结果为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.字符串赋值不能用=
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。