找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1691|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

printf(" %p\n")

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:107189 發(fā)表于 2016-3-6 13:18 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
1、printf參數(shù)就是挺多了,我也是不少都沒(méi)用過(guò),呵呵
C/C++ code %a                浮點(diǎn)數(shù)、十六進(jìn)制數(shù)字和p-記數(shù)法(C99)
%A    浮點(diǎn)數(shù)、十六進(jìn)制數(shù)字和p-記法(C99)
%c    一個(gè)字符 
%d    有符號(hào)十進(jìn)制整數(shù) 
%e    浮點(diǎn)數(shù)、e-記數(shù)法
%E    浮點(diǎn)數(shù)、E-記數(shù)法
%f    浮點(diǎn)數(shù)、十進(jìn)制記數(shù)法  
%g    根據(jù)數(shù)值不同自動(dòng)選擇%f或%e.
%G    根據(jù)數(shù)值不同自動(dòng)選擇%f或%e.
%i               有符號(hào)十進(jìn)制數(shù)(與%d相同)
%o    無(wú)符號(hào)八進(jìn)制整數(shù)
%p    指針    
%s    字符串
%u    無(wú)符號(hào)十進(jìn)制整數(shù)
%x    使用十六進(jìn)制數(shù)字0f的無(wú)符號(hào)十六進(jìn)制整數(shù) 
%X    使用十六進(jìn)制數(shù)字0f的無(wú)符號(hào)十六進(jìn)制整數(shù)
%%    打印一個(gè)百分號(hào)
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等),取地址一般得加&,可以通過(guò)%p打印出來(lái),而指針特殊在他本身內(nèi)容是地址,為此,打印%p的時(shí)候呢,如沒(méi)有加&是打印的指針的內(nèi)容(存的地址),而按照區(qū)地址一般加&的原則來(lái)打印指針的時(shí)候呢,打印的是指針的地址而不是其內(nèi)容地址。
實(shí)踐:
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;
}


問(wèn):如果想打印p指針本身的地址,如何弄?
答:printf("%p",&p);
問(wèn):p2=p是如何賦值的?
答:p的指針內(nèi)容(里面存的是個(gè)地址)賦給p2。
問(wèn):p,p2存儲(chǔ)的內(nèi)容(地址)相同,它們兩個(gè)的地址相同?
答:不同,可以通過(guò)打印他們的地址:printf("%p",&p); printf("%p",&p2); 來(lái)對(duì)比一下。
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、
還有個(gè)挺好用的,如輸出"0x123456"這個(gè)地址
C/C++ code
printf("%#x\n", 0x123456); // %#: 0x


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表