printf和scanf函数为什么一个要取地址符一个不用呢?

如题所述

你用scanf输入的时候,是要在函数内对变量值进行修改的。
而printf输出的时候,只用到变量的值,不必在函数内改变变量的值。
如果是普通的函数参数传递,比如传递a,变量接收的方式是在函数内另外建立一个变量,假设是b,然后把a的值传递给b就可以了。这样如果对b的值进行修改,不影响原来的a。
传地址则可以通过操作改变实参的值,比如把a的地址p1传递到函数中,函数中p2接收到了a的地址,因为p2指向的是a的地址,所以对p2地址指向的内容修改,就对原来的变量a修改了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-25
因为scanf的取得一个字符,然后把这个字符存放到某一内存区域,所以要为它(字符)分配存储空间。
printf的输出一个字符。
输出的时候系统根据变量名(外部标识符)在内存中找到与之相匹配的字符进行输出操作。所以不用取地址符。
楼主不明白请追问。本回答被网友采纳
第2个回答  推荐于2016-06-18
因为scanf的取得一个字符,然后把这个字符存放到某一内存区域,所以要为它(字符)分配存储空间。
printf的输出一个字符。
输出的时候系统根据变量名(外部标识符)在内存中找到与之相匹配的字符进行输出操作。所以不用取地址符。
第3个回答  2013-11-25
printf是输出,不用...因为你调用它时已经把要输出的数据用形参的方式传送给它了

scanf是输入,形参可以说是局变量,函数执行完后就没了,传了地址让它保存到指定地址,这样数据就可保存了!本回答被网友采纳
第4个回答  2013-11-25
因为scanf函数要返回数值给变量,而printf函数不用返回值给变量
相似回答