请教:
为什么地址不同输出的值是一样的??
还有使用&取的地址为什么和int指向数组的指针的地址不一样啊?
int p = arr[0];
&p
和
int *q = arr;
这里&p和 指针q打印出来的地址不一致的原因是
因为int p = arr[0]; 这一步只是一个赋值操作,这里定义了一个新的变量p 然后将arr[0]这个元素的值赋值给了p, 这个时候p和arr[0]只是存储的值是一样的,但是地址没有任何关联,因为p和arr[0]是两个不同的int类型变量 p的地址和arr[0]的地址也是不同的
int *q = arr;
arr指向数组的起始地址,我们知道arr[0]就是数组的第一个元素,所以数组的起始地址就是第一个元素的内存地址即 arr等价于&arr[0], q=arr 等价于 q = &arr[0]
再回到上面
int p = arr[0];
和
int *q = &arr[0]
因为p和arr[0]是不同的变量 所以&p和q打印出来的地址必然不会一样