printf(" %p\n")解决办法
printf(" %p\n")
刚刚才知道还有个printf("%p")是输出变量的地址。以前怎么就没有看到过呢??
------解决方案--------------------
printf参数就是挺多了,我也是不少都没用过,呵呵
- C/C++ code
#include <stdio.h> int main(void) { int x; int *p1,*p2; p1 = &x; p2 = p1; printf(" %p\n",p2); /* print the address of x,not x's value */ return 0; }
刚刚才知道还有个printf("%p")是输出变量的地址。以前怎么就没有看到过呢??
------解决方案--------------------
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的无符号十六进制整数 %% 打印一个百分号
------解决方案--------------------
- C/C++ code
#include <stdio.h> int main() { int i = 10; printf("%0X\t%p\n",&i,&i); return 0; } //输出: 22FF74 0022FF74 Process returned 0 (0x0) execution time : 0.000 s Press any key to continue.
------解决方案--------------------
printf(" %p\n",p2);
就是把p2的内容当成是指针(地址)来输出,不是输出p2的地址,实际上与输出十六进制格式差不多。
------解决方案--------------------
知道就好,不过这个确实用的不多
------解决方案--------------------
恩,学习一下
回复内容太短了!
------解决方案--------------------
想看地址值,用%d输出指针也可以。
------解决方案--------------------
任何变量都有地址,变量名指向它的内容(指针的内容是地址或者非指针类型内容可能是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; }
------解决方案--------------------
------解决方案--------------------
学习学习学习了~~~~~
------解决方案--------------------
------解决方案--------------------