我是c初学者,关于字符串有个问题:赋值start的字符串再与start比较,关系表达式值为假?

 #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

还有字符串比较不是这样比较的,不能用==符号去判断两个字符串是否相等