C语言,函数的调用,求解答

 我来答
弑绯
推荐于2016-04-11 · TA获得超过2500个赞
知道小有建树答主
回答量:893
采纳率:75%
帮助的人:721万
展开全部

1、原因很简单,max2不输出的原因是,你的函数最后只是返回了i或者j的值铅喊搏,但没有其它操作了。

如果你想要max2输出,那么要将30行换成:

printf("%d",max2(a,b));

max2(a,b)最终得到只是个值,你完全可以把它看成是一个变量。如果这段代码还要详细点:

int s;
s=max2(a,b);
printf("%d",s);

这下看明白了吧


2、有返回值和没返回值其实很好区分,只要有你最终是否会用到return去得到一个值就是区分的方法。


3、你的max1,其实是有返回值的。补全的话在第7行后面是有一句return 0的,槐祥但渗搏是这个返回值不是你实际会用到的,它的意思只是说你的这段程序是正确的。是可执行的。


4、max3没有返回值,它虽然有输出,但是这个输出的i或者j不是这个函数的返回值,只是函数执行的一个步骤而已。max1中的printf输出也是同理

追问
可max3函数执行完毕就会被释放掉,屏幕上就应该就没有输出了啊。
追答

你执行的打印输出,在执行这个函数的时候就已经执行了,这个你释不释放没任何关系。如果你要说释放的话,max1执行完也会释放,包括主函数运行完毕也会释放。

你每一个函数都看成是一个小的程序来看你就能更好的理解了。例如max3,你可以看成是这样

#include<stdio.h>
void main(void)
{
  int i,j;
  scanf("%d%d",i,j);
  if(i>j)
    printf("%d",i);
  else
    printf("%d",j);
}

你看看这时的函数,在屏幕上会打印输出吗??答案是会。但是函数会释放吗??也会!!但释放的是什么??是i和j的值。如果重新运行程序,i和j又要重新赋值。好了,现在你肯定要问,如果函数有返回值呢??同样的例子

#include<stdio.h>
int main(void)
{
  int i,j;
  scanf("%d%d",i,j);
  if(i>j)
    printf("%d",i);
    

  else
    printf("%d",j);  
    return j;
}

这时候有返回值了。但屏幕上有出现过两次i和j的输出??没有。前面两次的输出,说专业点叫打印,它是在屏幕上打印出来的。这是一个操作。但它不是函数的返回值。函数最终得到的是i或者j中的一个。同时,函数运行完毕,函数还是会释放。i和j的值又要重新赋值。返回的值在得到后也会变为待定

达当地iaaoo11
2015-08-06 · 超过11用户采纳过TA的回答
知道答主
回答量:94
采纳率:0%
帮助的人:26.3万
展开全部
当函数有返回值时,函数调用可以作为一个表达式出灶族现在任何合法的亮猜地方;当函数无返回值时,不能敬辩型把函数调用的结果通过赋值号进行赋值,此时函数的调用应作为一条独立的语句.
追问
“函数调用可以作为一个表达式出现在任何合法的地方”以及“独立的语句”怎么理解?我刚入门,别说的太高深.另外为什么max1 和max3一个有返回值,一个没有返回值都能正确输出?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式