|
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
|
|