永发信息网

为什么 printf 函数需要变量名,而 scanf 函数需要变量地址?可否使用变量名?分析一下 scanf 函数大致的处理过程。

答案:2  悬赏:10  手机版
解决时间 2021-06-09 02:56
  • 提问者网友:書生途
  • 2021-06-08 08:49
为什么 printf 函数需要变量名,而 scanf 函数需要变量地址?可否使用变量名?分析一下 scanf 函数大致的处理过程。
最佳答案
  • 五星知识达人网友:七十二街
  • 2021-06-08 09:03

因为printf函数是值传递,先给变量赋初值,然后才能输出变量的值。而scanf函数是地址传递,传递的是变量的地址,而不是变量的具体数值。例如有如下程序:


# include<stdio.h>


void main()


{ int num1,num2,Max,Min;


printf("Input frist number: ");


scanf("%d",&num1); //地址传递//


printf("Input second number: ");


scanf ("%d",&num2);


printf("num1=%d,num2=%d\n",num1.num2);//输出变量num1和num2的值//


if (num1>num2)


Max=num1;,Min=num2;


else


Max=num2,Min=num1;


}


如果scanf函数要是用变量名作参数,那需要用指针改写,请自己尝试,笔者不再累赘。

全部回答
  • 1楼网友:爱难随人意
  • 2021-06-08 09:28
因为你需要把变量的地址告诉scanf,scanf才知道把读到的值存到什么地方去! 也就是说scanf必须操作实参本身! 如果你传递的只是变量 int a = 0; scanf( "%d", a ); // scanf会认为你要把一个int存入0x00000000这个地址,显然要出问题 printf由于不需要操作实参本身,所以直接传递变量值的一份拷贝过去就行了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯