关于scanf和printf的参数

为什么printf里面既可以用指针,又可以用变量,而scanf就不能,只能用指针,不能用变量呢?

让你定义一个函数,改变它的参数,要求这个参数的改变作用到主程序,你怎么做?是不是只能是指针?

反过来,让你在函数中得到主程序中的变量,怎么传?是不是既可以是变量也可以是指针?

能不能,由函数的原形,即定义决定。
这个没有太多的为什么,记住就行!

scanf必须用地址
printf的格式符要和后面的相一致,比如%s对应指针,%d对应变量。
这是规定,不是随意变的。

一楼说的对,输入和输出还是有差别的

因为这就是C语言。就像为什么中文这么说一样。语言都有自己的语法,不是吗?