【发布时间】:2013-10-22 20:40:54
【问题描述】:
我遇到了指针取消引用问题。
在 C 中,&a 表示 a 的地址。如果 a 是指针,则 &a 仅表示该指针的地址。
如果我们有:
char ptr [] = "abcd"
ptr 应该是指向第一个字符的指针,即'a'。因此,
&ptr
应该是ptr的地址,与'a'的地址不同。但是,当我尝试以下代码时,我真的很困惑:
int main()
{
char a [] = "abcd";
printf("0x%X 0x%X", a, &a);
}
Output: 0xBF7E62AB 0xBF7E62AB
有人可以解释为什么 a 和 &a 具有相同的值吗?根据我的理解,它们应该是不同的。提前谢谢
【问题讨论】:
-
ptr不是指针。这是一个数组。你可以看出,因为你的代码中没有*,而是一个大胖子[]。 -
尝试打印
a+1和&a+1的值,你会看到不同。 web.torek.net/torek/c/pa.html 很好地回答了你的问题,顺便说一句。 -
@KerrekSB 但是,嘿,一个数组,我只是一个指针而已???
-
@H2CO3:不要喷 - “iznt it” 是一个死的赠品。真正的专业人士从不质疑自己的假设,而是自以为是地把它们当作事实,然后愤怒地斥责现实不符合他的结论。
-
@KerrekSB 我希望那是讽刺。 :) “真正的专业人士从不质疑自己的观点”……这种行为我见过多少次了……