黑马程序员技术交流社区

标题: 关于C语言的printf函数 [打印本页]

作者: King93421    时间: 2014-12-10 12:05
标题: 关于C语言的printf函数
以前学C的时候,就没搞明白,现在看视频对于这一点还是有疑问。那就是printf("平均分%d\n",&a);
这个&到底什么时候有,什么时候没有,还是说怎么滴?
求大神赐教!!!
小弟在此谢过!!

作者: 励志入黑马    时间: 2014-12-10 12:18
&a是取内存中a的地址
作者: King93421    时间: 2014-12-10 12:20
励志入黑马 发表于 2014-12-10 12:18
&a是取内存中a的地址

这个我知道呀,但是那两种的形式我都见过。就是不知道什么情况下printf函数中需要用& ,什么情况不用。
作者: 迎着太阳    时间: 2014-12-10 12:28
printf("%p\n",&a);//这是取a在内存中的地址,打印出来的只是地址值,

printf("%d\n",a);//这是取存在a中的内容,a的值。
作者: King93421    时间: 2014-12-10 12:29
迎着太阳 发表于 2014-12-10 12:28
printf("%p\n",&a);//这是取a在内存中的地址,打印出来的只是地址值,

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

噢,这样子啊。我再琢磨琢磨!
作者: 励志入黑马    时间: 2014-12-10 12:29
当需要打印a的值的时候不用加&,当需要打印a的内存地址的时候加&
作者: 励志入黑马    时间: 2014-12-10 12:30
当需要打印a的值的时候不用加&,当需要打印a的内存地址的时候加&
作者: King93421    时间: 2014-12-10 12:30
励志入黑马 发表于 2014-12-10 12:29
当需要打印a的值的时候不用加&,当需要打印a的内存地址的时候加&

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

可能我是把这个跟Java中的搞混了
作者: sweet凌风    时间: 2014-12-10 14:02
呵呵,慢慢来呗
作者: RockyChen    时间: 2014-12-10 16:06
前来学习
作者: Xwoder    时间: 2014-12-11 09:35
&用来取变量的地址,
a就是取变量自身的值
&a就是取变量的地址




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