c語言中%p用來輸出指標型別自身的值。
也就是說%p用來輸出地址。?
一、使用方法:
%p一般僅用於printf及同類函式中。形式為
printf("%p",varp);
其中後續引數varp為某一個指標變數。如
int?a,*p;
p=&a;
printf("%p?%p",?p,?&a);這裡輸出的p和&a都是int*型。?
二、功能:
%p格式符會輸出指標本身的值,也就是指標指向的地址值。
該輸出為16進位制形式,具體輸出值取決於指標指向的實際地址值。
三、與%x區別:
%x同樣輸出16進位制形式,不過%x對應的是int型,也就是說,其輸出長度與系統int型佔的位元組數相等。如32位編譯器,int型佔4位位元組,那麼%x輸出的結果最多為16個16進位制字元。
而%p輸出寬度取決於系統地址匯流排位數,即16位最多輸出4位16進位制字元,32位最多輸出8位16進位制字元,64位最多輸出16位16進位制字元。
所以用%p輸出地址,相對於用%x輸出,可以有更好的移植型和適應性,不會因為更換平臺而引起錯誤。
c語言中%p用來輸出指標型別自身的值。
也就是說%p用來輸出地址。?
一、使用方法:
%p一般僅用於printf及同類函式中。形式為
printf("%p",varp);
其中後續引數varp為某一個指標變數。如
int?a,*p;
p=&a;
printf("%p?%p",?p,?&a);這裡輸出的p和&a都是int*型。?
二、功能:
%p格式符會輸出指標本身的值,也就是指標指向的地址值。
該輸出為16進位制形式,具體輸出值取決於指標指向的實際地址值。
三、與%x區別:
%x同樣輸出16進位制形式,不過%x對應的是int型,也就是說,其輸出長度與系統int型佔的位元組數相等。如32位編譯器,int型佔4位位元組,那麼%x輸出的結果最多為16個16進位制字元。
而%p輸出寬度取決於系統地址匯流排位數,即16位最多輸出4位16進位制字元,32位最多輸出8位16進位制字元,64位最多輸出16位16進位制字元。
所以用%p輸出地址,相對於用%x輸出,可以有更好的移植型和適應性,不會因為更換平臺而引起錯誤。