黑马程序员技术交流社区

标题: 关于指针的一个问题 [打印本页]

作者: S捭K阖Y    时间: 2014-5-22 22:05
标题: 关于指针的一个问题
请问下列程序答应的是p的值还是变量&p
int *p
printf (“%p”,p);
作者: 奇迹    时间: 2014-5-22 22:22
p的内容
作者: yangying514    时间: 2014-5-22 22:29
首先没有%p这个格式,你可能想写的是%d吧。你这样写输出的是p里面的值,一般为地址值。如果定义int a=88,p=&a,那么你输出的就是a变量的地址,此时如果写成printf (“%p”,*p);那输出的就是a的值88.
如下图:


如果改成:



作者: S捭K阖Y    时间: 2014-5-23 00:34
yangying514 发表于 2014-5-22 22:29
首先没有%p这个格式,你可能想写的是%d吧。你这样写输出的是p里面的值,一般为地址值。如果定义int a=88,p ...

呵呵,我用的是xcode,有这个格式的,不过还是谢谢,
作者: a1130003724    时间: 2014-5-23 00:59
int  *p
int  m;
m=7;
p=&m;
printf (“%p",p);//你这样写输出的是p里面的值,为m在计算机中存储的地址值
printf ("%p",*p);//此时如果写成那输出的就是m的值7
希望能给你帮助
作者: Guardian_Angel    时间: 2014-5-23 02:47
任何变量都有地址,变量名指向它的内容(指针的内容是地址或者非指针类型内容可能是char int等),取地址一般得加&,可以通过%p打印出来,而指针特殊在他本身内容是地址,为此,打印%p的时候呢,如没有加&是打印的指针的内容(存的地址),而按照区地址一般加&的原则来打印指针的时候呢,打印的是指针的地址而不是其内容地址。即是:      
  1.           print(“%p”,&p);//打印的是指针P本身的地址值
  2.           print(“%p”,p);//打印的是指针p存的地址值
复制代码




作者: yangying514    时间: 2014-5-23 08:41
S捭K阖Y 发表于 2014-5-23 00:34
呵呵,我用的是xcode,有这个格式的,不过还是谢谢,

原理一样的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2