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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© King93421 初级黑马   /  2014-12-10 12:05  /  951 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以前学C的时候,就没搞明白,现在看视频对于这一点还是有疑问。那就是printf("平均分%d\n",&a);
这个&到底什么时候有,什么时候没有,还是说怎么滴?
求大神赐教!!!
小弟在此谢过!!

12 个回复

倒序浏览
&a是取内存中a的地址
回复 使用道具 举报
励志入黑马 发表于 2014-12-10 12:18
&a是取内存中a的地址

这个我知道呀,但是那两种的形式我都见过。就是不知道什么情况下printf函数中需要用& ,什么情况不用。
回复 使用道具 举报
printf("%p\n",&a);//这是取a在内存中的地址,打印出来的只是地址值,

printf("%d\n",a);//这是取存在a中的内容,a的值。
回复 使用道具 举报 1 0
迎着太阳 发表于 2014-12-10 12:28
printf("%p\n",&a);//这是取a在内存中的地址,打印出来的只是地址值,

printf("%d\n",a);//这是取存在a中 ...

噢,这样子啊。我再琢磨琢磨!
回复 使用道具 举报
当需要打印a的值的时候不用加&,当需要打印a的内存地址的时候加&
回复 使用道具 举报
当需要打印a的值的时候不用加&,当需要打印a的内存地址的时候加&
回复 使用道具 举报
励志入黑马 发表于 2014-12-10 12:29
当需要打印a的值的时候不用加&,当需要打印a的内存地址的时候加&

好的 谢谢
回复 使用道具 举报
这个加不加是要看你程序之前是以变量定义的还是取&(地址)定义的,&这个是一个地址符好,而a是地址。&a的意思是指通过a的地址找到a地址所对应的变量值。
int b;和int &b;是期中这两个b是不一样的,第一个是变量,第二个是地址;
而printf("平均分%d\n",&a);中的输出的是指,但是你也可以将&a的&去掉,看看输出的是什么。可能出错,要是不出错,输出的值,你会看不懂
回复 使用道具 举报
sweet凌风 发表于 2014-12-10 13:46
这个加不加是要看你程序之前是以变量定义的还是取&(地址)定义的,&这个是一个地址符好,而a是地址。&a的 ...

可能我是把这个跟Java中的搞混了
回复 使用道具 举报
呵呵,慢慢来呗
回复 使用道具 举报
前来学习
回复 使用道具 举报
Xwoder 中级黑马 2014-12-11 09:35:07
13#
&用来取变量的地址,
a就是取变量自身的值
&a就是取变量的地址
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马