关于C语言函数调用的问题

书中有一句话是这样的:如果在main函数中调用的其他函数,调用后流程将返回到main函数中,都在main函数中结束整个程序的运行。
我的理解是这样的不知道是否正确,请各位大神看看!,这是我自画的,我是新手,还望大神帮帮忙看看对不对!

#include<stdio.h>

int sum(int a,int b)//这里定义了一个函数体名字是sum

{

return a+b;//返回一个值就是它们的加数

}

main()//主函数

{

int a,b,c;//定义三个变量

//为它们赋值

 a=4;

b=5;

c=sum(a,b);//这里是函数传递参数,然后返回到函数体里执行。

    printf("这个数是%d\n",c);//输出值

}

c语言要区分大小写。sum里不能直接接受值,需要变量传递参数,然后在返回到函数体里执行。a=sum(5+5)就成了一个表达式、不是调用函数。希望对你有帮助。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-01
sum内的就是sum内执行,不会跑到main里执行,你为什么要这么理解.
函数就是子过程.举个例子:
你平时上班的时候,领导叫你帮他去拿一下快递.
他可以一天叫你拿多次,也许也只有一次,领导叫你拿,就是call,相当于调用函数.他如果做在你位置上等你拿回,就类例同步调用,如果他叫你一下就走了干其他事情了,就叫异步调用,因为他还可以做其他事情.不必等你.
你在拿快递的时候,要把手头的工作停下来,等拿回来后,还得继续做手头的事情.拿回来的东西,就是返回值.拿的过程就是执行函数.
满意请采纳.本回答被提问者和网友采纳
第2个回答  2013-08-31
不是你想的那样,大概来说,编译成的机器码应该是这样:

main函数中:预留a的内存,传递5+5给sum函数,保存当前执行到的代码位置,【跳转到sum函数】,将已记录的结果赋给a,传递"%d\n"和a给printf函数,结束程序
sum函数中:计算a+b的值,记录结果,【跳转回保存的代码位置】(这就是main函数中的位置) <- 说的是这个操作
第3个回答  2013-08-31
你理解错了。调用 sum 时, a+b 在 sum 里执行。只是执行结束后,重新回到 main 里接着 sum(a,b)的调用之后继续执行printf那句。
第4个回答  2013-08-31
你好,你可以这样理解,return 是返回的值,后面跟的是表达式,首先会先计算表达式的值,在返回给调用函数。
所以,a = sum(5+5);是先调用sum函数,sum函数返回10(即5+5的结果)。
不懂再追问好了。追问

也就是说将两个五返回给sum执行完后得到的值十在返回给main函数并赋给a最后输出结束整个程序,也就是整个流程还是在被调函数中执行执行完后在将得到的值返回个主调函数,最后主函数执行完程序也随之结束,能否在给我解释的详细点,谢谢。

相似回答
大家正在搜