Erb*_* Mo 0 c c++ arrays pointers
我认为数组和指针基本上是一回事,直到我运行这个程序:
int main() {
int* a = new int(19);
int b[1];
b[0] = 19;
printf("*a: %d\n a: %p\n &a:%p\n", *a, a, &a);
printf("*b: %d\n b: %p\n &b:%p\n", *b, b, &b);
delete a;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
*a: 19
a: 0x7f94524000e0
&a:0x7fff51b71ab8
*b: 19
b: 0x7fff51b71ab4
&b:0x7fff51b71ab4
Run Code Online (Sandbox Code Playgroud)
有谁可以解释为什么&b的输出与b相同?
谢谢!-Erben
好吧,b是一个数组.在最轻微的借口下,它会腐烂成指向第一个元素的指针b.但是请注意,该表达式b和&b是不等效的:b衰变成指针的第一个元素,即,它是类型int*而&b是指向数组,即它是类的int(*)[1].