C语言,函数的调用,求解答
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的值又要重新赋值。返回的值在得到后也会变为待定