1. 程式人生 > 其它 >C語言:指標變數p、*p、&a之間的關係

C語言:指標變數p、*p、&a之間的關係

舉個例子:

int a =10;

int* p = &a;//這裡解地址a的意思是獲取a的記憶體地址,所以指標變數p存放的是a的記憶體地址,列印的時候用%p

 

 單步執行時候,記憶體中a的值記憶體:

 

這裡p存放的a的記憶體地址

 

 那麼p的值儲存的是a的記憶體地址,通過&a方式獲取

那麼*p又是什麼呢?

測試一下列印下*p,列印下來是a的值

這說明*p儲存的是a儲存的值,更合理的說法是:

p指標指向a記憶體的值是*p表示,*p獲取了a的值,只不過是通過a的記憶體地址獲取的

 

 這裡需要注意的是這裡列印的是%d,如果列印%p呢?

這裡獲取了*p的記憶體地址(這種用法有問題,正常來講*p僅僅是用來獲取值)

 

 

 那麼列印&p呢?猜測&a是獲取a的記憶體地址,那麼&p就是獲取p指標變數的記憶體地址,這裡要說明的是因為p在記憶體中的位置不固定,所以通過除錯檢視&p儲存的內容:

 

 這裡儲存了p的記憶體地址:

 

總結下就是:

*是獲取值,&是獲取地址