c++函数的调用到底怎么去理解 10
4个回答
展开全部
不知道你所需要的答案有多深。
如果只是需要很粗浅的理解,那么上楼说的就已经够了。就是在函数被调用处的函数代码的一次展开、执行。
如果深一点的话,那上一种说法就是错误的,没有那么简单。有声明函数的时候也许你会看到inline这个关键词,如果有这个关键词,C++编译器在编译的时候就会将函数在被调用处展开,与上种说法一致。如果没有这个关键词,就不是这样的了。
这里如果你有点汇编基础的话,会对下的话有更好的理解。
C/C++默认的是_cdec的调用方式,当然C++在牵涉到类时会用thiscall方式。这里只说_cdec.当执行到调用函数这一行时,就将函数的参数从右至左一个一个装入栈中,然后跳到函数本身地址处执行,接着恢复栈。最后跳回函数被调用处的下一行代码继续执行。
看起来有些复杂,不过随着你学习的深入你会明白。
其实,你只要知道函数的调用是一次代码展开或者一次跳转就行了。
如果只是需要很粗浅的理解,那么上楼说的就已经够了。就是在函数被调用处的函数代码的一次展开、执行。
如果深一点的话,那上一种说法就是错误的,没有那么简单。有声明函数的时候也许你会看到inline这个关键词,如果有这个关键词,C++编译器在编译的时候就会将函数在被调用处展开,与上种说法一致。如果没有这个关键词,就不是这样的了。
这里如果你有点汇编基础的话,会对下的话有更好的理解。
C/C++默认的是_cdec的调用方式,当然C++在牵涉到类时会用thiscall方式。这里只说_cdec.当执行到调用函数这一行时,就将函数的参数从右至左一个一个装入栈中,然后跳到函数本身地址处执行,接着恢复栈。最后跳回函数被调用处的下一行代码继续执行。
看起来有些复杂,不过随着你学习的深入你会明白。
其实,你只要知道函数的调用是一次代码展开或者一次跳转就行了。
展开全部
#include<iostream>
using namespace std;
int sum(int x,int y)//定义一个函数,命名为sum
{
int a;
a=x+y;
return a;//函数必须返回一个值。就如x=a+b一样,计算了a+b之后,就把x的值返回计算机拿来用
}
int main()//主函数
{
int x=11,y=21;
cout<<sum(x,y);//这里,调用了上面的sum函数
x=sum(x,y)+y;//你可以把sum看成是一个值,就像你学数学的x=a+b的x一样
return 0;//当然,主函数也要返回一个值,凡是函数都要返回一个值,你就如你学数学一样,x=a+b是函数,a+b不是!因为a+b没有返回一个值!
}
够详细了吧
using namespace std;
int sum(int x,int y)//定义一个函数,命名为sum
{
int a;
a=x+y;
return a;//函数必须返回一个值。就如x=a+b一样,计算了a+b之后,就把x的值返回计算机拿来用
}
int main()//主函数
{
int x=11,y=21;
cout<<sum(x,y);//这里,调用了上面的sum函数
x=sum(x,y)+y;//你可以把sum看成是一个值,就像你学数学的x=a+b的x一样
return 0;//当然,主函数也要返回一个值,凡是函数都要返回一个值,你就如你学数学一样,x=a+b是函数,a+b不是!因为a+b没有返回一个值!
}
够详细了吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以理解为:被调用函数在被调用的地方展开代码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C++的函数调用和C的是一样的,调用调用顾名思义就是拿来用而已,函数就是你定义了一个模型,好比做砖需要一个模子,把材料装进模子里,经过加工就是一个砖了,材料不同做出来的砖也不同,也就是模型是一定的,套用不同的参数,结果也不同,这是我对函数的理解,当然比较适合初学者
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询