因为改变一个变量的值,需要通过改变其地址存储的值来改变。
所以scanf需要用取址符 & 来使获得键盘输入的值写到地址中。
而printf只需要取出值即可,无所谓地址为何
可是得到变量名,让函数自己在内部逻辑加上 & 符号不也可以取到地址吗?为什么要我们多做操作呢?
因为即便你直接给了 scanf 一个变量名,作为一个函数,它取到也不过是形参的地址,并不是我们真正要操作的变量地址。
所以scanf需要用取址符 & 来使获得键盘输入的值写到地址中。
而printf只需要取出值即可,无所谓地址为何
因为即便你直接给了 scanf 一个变量名,作为一个函数,它取到也不过是形参的地址,并不是我们真正要操作的变量地址。