標(biāo)題: printf(" %p\n") [打印本頁]

作者: 51黑tt    時間: 2016-3-6 13:18
標(biāo)題: printf(" %p\n")
1、printf參數(shù)就是挺多了,我也是不少都沒用過,呵呵
C/C++ code %a                浮點數(shù)、十六進(jìn)制數(shù)字和p-記數(shù)法(C99)
%A    浮點數(shù)、十六進(jìn)制數(shù)字和p-記法(C99)
%c    一個字符 
%d    有符號十進(jìn)制整數(shù) 
%e    浮點數(shù)、e-記數(shù)法
%E    浮點數(shù)、E-記數(shù)法
%f    浮點數(shù)、十進(jìn)制記數(shù)法  
%g    根據(jù)數(shù)值不同自動選擇%f或%e.
%G    根據(jù)數(shù)值不同自動選擇%f或%e.
%i               有符號十進(jìn)制數(shù)(與%d相同)
%o    無符號八進(jìn)制整數(shù)
%p    指針    
%s    字符串
%u    無符號十進(jìn)制整數(shù)
%x    使用十六進(jìn)制數(shù)字0f的無符號十六進(jìn)制整數(shù) 
%X    使用十六進(jìn)制數(shù)字0f的無符號十六進(jìn)制整數(shù)
%%    打印一個百分號
2、
int main()
{
    int i = 10;
    printf("%0X\t%p\n",&i,&i);
    return 0;
}
//輸出:
22FF74  0022FF74
3、
  任何變量都有地址,變量名指向它的內(nèi)容(指針的內(nèi)容是地址或者非指針類型內(nèi)容可能是char int等),取地址一般得加&,可以通過%p打印出來,而指針特殊在他本身內(nèi)容是地址,為此,打印%p的時候呢,如沒有加&是打印的指針的內(nèi)容(存的地址),而按照區(qū)地址一般加&的原則來打印指針的時候呢,打印的是指針的地址而不是其內(nèi)容地址。
實踐:
C/C++ code
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    int a=8;
    int *p;
    int *p2;
    printf("%p\n",&a);
    p=&a;
    printf("%p\n",p);
    printf("%p\n",*p);
    p2 = p;
    printf("%p\n",p2);
    printf("%p\n",p2);
    printf("p=%p\n",&p);
    printf("p2=%p\n",&p2);
    printf("%d\n",*p2);
   
    return 0;
}


問:如果想打印p指針本身的地址,如何弄?
答:printf("%p",&p);
問:p2=p是如何賦值的?
答:p的指針內(nèi)容(里面存的是個地址)賦給p2。
問:p,p2存儲的內(nèi)容(地址)相同,它們兩個的地址相同?
答:不同,可以通過打印他們的地址:printf("%p",&p); printf("%p",&p2); 來對比一下。
4、
306771d2 at 2010-2-23 11:14:33 C/C++ code
//這樣理解的吧;
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    int a=8;
    int *p;
    int *p2;
    printf("a  value  :%p\n",&a);//a的地址
    p=&a;
    printf("p  value  :%p\n",p);//把p的值按地址打印,p的是a地址
    printf("%p\n",*p);//p指向的值 按地址打印
    p2 = p;
    printf("p2 value  :%p\n",p2);//把p2的值按地址打印,p的是a地址
    printf("p  address:%p\n",&p);//變量p自己的地址
    printf("p2 address:%p\n",&p2);//變量p2自己的地址
    printf("%p\n",*p2);
   
    return 0;
}
5、
還有個挺好用的,如輸出"0x123456"這個地址
C/C++ code
printf("%#x\n", 0x123456); // %#: 0x







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1