Hes*_*aqi 0 c c++ pointers equality char
我想比较两个Char指针:
char * x;
char * y;
x = "Hesham";
y = "Hesham";
printf("%d %d \n", &x, &y);
if(x==y)
{
printf("=\n");
}
else
{
printf("!=\n");
}
Run Code Online (Sandbox Code Playgroud)
执行结果是:
2293368 2293360
=
Run Code Online (Sandbox Code Playgroud)
1 - 为什么两个指针有不同的收件人,操作==返回true?
2 -为什么编译存储字符串没有文字Hesham只有一次,并使用其地址两次x和y?
Dav*_*nan 11
为什么两个指针的地址不同,操作
==返回true?
&x并且&y是指针变量的地址而不是字符串的地址.由于x和y是不同的变量,它们具有不同的地址.
然后比较值x和y碰巧相同的值,因为编译器已注意到两个字符串文字具有相同的值,并且只存储了文字的单个副本.
为什么没有编译器存储字符串常量
"Hesham"只有一次,并使用其地址两次x和y?
它做了.这就是为什么x == y评估为真.
另一个要点是%p在打印指针时应该使用格式说明符.