Ric*_*wal 1 c string character
代码是:
#include<stdio.h>
int main()
{
char *st1="hello";
char *st2="hello";
if(st1==st2)
printf("equal %u %u",st1,st2);
else
printf("unequal");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到输出"相等4206628 4206628".
st1并且st2是指向只读字符串文字的指针.(真的你应该使用const char*类型,但编译器对此放松.)
在这种特殊情况下,编译器优化了代码,因此只存储了一个字符串文字.允许此优化,因为C标准声明任何修改只读字符串的尝试都是未定义的行为.所以指针具有相同的地址.因此st1 == st2(比较指针地址而不是内容)是真的.
C标准没有强制要求这种行为,所以不要依赖它.