我在寫這個程序 -爲什麼當p指向一個數組時,p和* p會給出相同的地址?
#include<stdio.h>
void main()
{
int arr[20];
arr[0]=22;
arr[1]=23;
int (*p)[20]=&arr;
printf("address in p :%u:\n",p);
printf("address in *p:%u:\n",*p);
}
這段代碼的輸出是同爲p和* P!據我所知,* p持有arr的基地址,這只是arr [0] !!! 所以* p應該給出輸出22!但它顯示出像p一樣的內存地址。請告訴我爲什麼會發生這種情況?背後的原因是什麼?
鍵盤站點鏈接:http://codepad.org/LK7qXaqt
使用'%p'打印數據指針 –
p ==&ARR,* P == ARR,* P = ARR [0],同一個地址的ARR,&ARR [! 0],&arr。 (* p)[0] == 22或** p == 22. – BLUEPIXY
Closely [related](http://stackoverflow.com/a/24468853/2455888)。 – haccks