天天看點

c語言中 %p的含義

今天看到了一個%p,表示沒有看到過。 = =。學習了。

       格式控制符“%p”中的p是pointer(指針)的縮寫。指針的值是語言實作(編譯程式)相關的,但幾乎所有實作中,指針的值都是一個表示位址空間中某個存儲器單元的整數。

printf函數族中對于%p一般以十六進制整數方式輸出指針的值,附加字首0x(自測的輸出沒有加字首0)。

// 示例:
  int i = 1;
  printf("%p",&i);
//相當于
  int i = 1;
  printf("0x%x",&i);
           

對于32位的指針,輸出一般會是類似0xf0001234之類的結果。

         %p存在的理由除了附加字首輸出的便利性以外(表示沒有體驗到 = =),如LS所說,指針的大小是不确定的,由實作決定。根據位址空間的大小,一般有16位、32位、64位的指針。盡管目前32位平台上的指針一般全是32位的,但舊的一些平台上可能有多種長度的指針(例如非标準的near、far、huge修飾的pointer)混用,無法用%x、%lx、%hx、%llx(對應int、long、short、long long)中的任意一種保證能輸出所有類型的指針。

%p 一個簡潔的解釋。。。 = = 。