gpt4 book ai didi

c++ - 比较字符指针

转载 作者:太空宇宙 更新时间:2023-11-04 05:03:29 24 4
gpt4 key购买 nike

我正在尝试比较两个字符指针:

char * x;
char * y;

x = "Hesham";
y = "Hesham";

printf("%d %d \n", &x, &y);

if(x==y)
{
printf("=\n");
}
else
{
printf("!=\n");
}

执行结果为:

2293368 2293360
=
  1. 为什么两个指针的地址不同,操作==返回true?

  2. 为什么编译器不只存储字符串文字 Hesham 一次,而是将其地址两次用于 xy

最佳答案

How come the two pointers are of different addresses and the operation == returns true?

&x&y 是指针变量的地址,而不是字符串的地址。由于xy是不同的变量,所以它们有不同的地址。

然后您比较 xy 的值恰好相同,因为编译器已经注意到这两个字符串文字具有相同的值并且只存储了一个文字的单个拷贝。

Why didn't the compiler store the string literal "Hesham" just once and use its address twice for x and y?

确实如此。这就是为什么 x == y 的计算结果为真。


还有一点需要注意,在打印指针时,您应该使用 %p 格式说明符。

关于c++ - 比较字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23935348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com