1、printf參數就是挺多了,我也是不少都沒用過,呵呵
C/C++ code %a 浮點數、十六進制數字和p-記數法(C99)
%A 浮點數、十六進制數字和p-記法(C99)
%c 一個字符
%d 有符號十進制整數
%e 浮點數、e-記數法
%E 浮點數、E-記數法
%f 浮點數、十進制記數法
%g 根據數值不同自動選擇%f或%e.
%G 根據數值不同自動選擇%f或%e.
%i 有符號十進制數(與%d相同)
%o 無符號八進制整數
%p 指針
%s 字符串
%u 無符號十進制整數
%x 使用十六進制數字0f的無符號十六進制整數
%X 使用十六進制數字0f的無符號十六進制整數
%% 打印一個百分號
2、
int main()
{
int i = 10;
printf("%0X\t%p\n",&i,&i);
return 0;
}
//輸出:
22FF74 0022FF74
3、
任何變量都有地址,變量名指向它的內容(指針的內容是地址或者非指針類型內容可能是char int等),取地址一般得加&,可以通過%p打印出來,而指針特殊在他本身內容是地址,為此,打印%p的時候呢,如沒有加&是打印的指針的內容(存的地址),而按照區地址一般加&的原則來打印指針的時候呢,打印的是指針的地址而不是其內容地址。
實踐:
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的指針內容(里面存的是個地址)賦給p2。
問:p,p2存儲的內容(地址)相同,它們兩個的地址相同?
答:不同,可以通過打印他們的地址: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
|