C語言:指標變數p、*p、&a之間的關係
阿新 • • 發佈:2022-05-06
舉個例子:
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的記憶體地址:
總結下就是:
*是獲取值,&是獲取地址