为什么 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由于不需要操作实参本身,所以直接传递变量值的一份拷贝过去就行了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯