A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© S捭K阖Y 中级黑马   /  2014-5-22 22:05  /  1754 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问下列程序答应的是p的值还是变量&p
int *p
printf (“%p”,p);

6 个回复

倒序浏览
p的内容
回复 使用道具 举报
首先没有%p这个格式,你可能想写的是%d吧。你这样写输出的是p里面的值,一般为地址值。如果定义int a=88,p=&a,那么你输出的就是a变量的地址,此时如果写成printf (“%p”,*p);那输出的就是a的值88.
如下图:


如果改成:


回复 使用道具 举报
yangying514 发表于 2014-5-22 22:29
首先没有%p这个格式,你可能想写的是%d吧。你这样写输出的是p里面的值,一般为地址值。如果定义int a=88,p ...

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



回复 使用道具 举报
S捭K阖Y 发表于 2014-5-23 00:34
呵呵,我用的是xcode,有这个格式的,不过还是谢谢,

原理一样的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马