#include <stdio.h>
int main(void)
{
char str[5]="start";
if (str == "start") printf("hallelujah!");
else printf("ooooops...");
return 0;
}
程序还是相当简单明了的。。。就是把str赋为start,再去和start比较,按逻辑这关系表达式的值应当是1,然而输出却是:oooops...
求解,是我程序写错了还是怎样...QAQ
C,C++C原生字符串,str == "start" 这个表达式,只是比较两个指针是否相等
== 不能用于数组比较,也不能用于数组表示的C,C++ 原生字符串比较
因为此时 数组,字符串在表达式中都是指针
== 在这里,只是比较字符串,或者数组,是否地址相同,
而不是比较数组内容是否相同,
也不是比较字符串是否相同
这里str表示的是赋值字符串的存储地址,与新的"start"是不相同的。你可以看一下数组,首地址,指针就明白了
数组就是指针。一定要十个字才能发送
数组长度应该定义为6吧,因为字符串还有一个\0在末尾
C++ string 可以用 == 比较两个字符串是否相等,其中**一个**可以为 字符串字面值
建议使用字符串比较函数strcmp()
这里str和"start"是不等的,你str的长度不够,还要容纳一个\0
还有字符串比较不是这样比较的,不能用==符号去判断两个字符串是否相等