- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C参数传递与作用域课件
参数传递与作用域;函数调用过程;在栈里保存函数调用现场和函数返回地址,以便当函数调用完毕后,能返回主调函数,并且能让程序继续往下执行。
在栈里给形参分配空间。
计算实参表达式的值,然后将这个值拷贝给形参。
执行函数体。
函数体执行完毕后,通过弹栈操作释放形参所占的空间,并且得到返回地址和调用函数的现场状态,返回主调函数。;【例12-1】:
#include iostream
using namespace std;int GetMax(int a,int b){ if(ab)
return a; else
return b; }
void main(){
int a = 10;
int b = 20;
int c = GetMax(a,b);
//调用函数,将实参的值拷贝给形参变量
couta“和”b“中较大的数是:” cendl;
};函数调用时的内存状态如图 ;函数调用方式;调用函数完成一定的功能,而不需要函数返回结果。若函数调用带有返回值,则这个值将会自动丢弃。例如:
DisplayMsg(How are you);
GetMax(9,4);
//调用GetMax函数,但并没有使用函数的返回值,这个返回值会自动丢弃;2、另一种方式是调用函数,执行一定的操作,得到函数的返回值,并且把这个返回值代入表达式中参与计算。例如:
int a = GetMax(9,4);
int a = GetMax(9,4) + 1;
cout GetMax(9,4)endl;
if(GetMax(9,-4) 0)
cout“最大值小于零。endl;
int a=9;
a=GetMax(GetMax(a,6),4); ;函数(原型)声明;函数原型声明;【例12-2:】函数声明(求一个数的n次方)
#include iostreamusing namespace std;
int Power (int base,unsigned int exponent);
void main (void){ cout 2 ^ 8 = “ Power(2,8) \n;}
int Power (int base,unsigned int exponent){ int result = 1; for (int i = 0; i exponent; ++i) {
result *= base;
} return result;};参数传递 ;函数的值传递调用;#include iostream
using namespace std;
void func(int a,int b); //函数声明
void main()
{ int a = 10;
int b = 20;
func(a,b);
couta=a ,b=bendl; }
void func(int a,int b)
{
a = 30;
b = 40;
couta=a ,b=bendl; }
;;;按照上面写法,Swap函数里的形参a、b和main函数里的变量a、b存储空间不同,在Swap函数里修改了变量a、b的值,并不能影响到main函数里的变量a、b,所以达不到在Swap函数里交换两个变量的值的目的。为了达到目的,我们需要将函数的参数传递方式改变为指针转递方式,如下: ;函数的指针传递调用 ;其方法是将函数的形参声明为指针,然后在函数调用时,将实参的地址传递给形参。在参数传递时,是将实参的地址复制给形参。
在被调函数里,对形参指向的内存空间进行操作,实际上就是对主调函数里的实参变量进行操作。因为函数的指针传递调用传递的是地址,所以函数的指针传递调用又称为传址调用。
请大家思考,如果要定义一个交换两个变量的值的函数,应该怎么写?;;赚胸蔓琳无驭石菲最因团能舔语口冰磅裳捷蛊落怕酥磋刊禽救少炔邑藏栋C++参数传递与作用域课件C++参数传递与作用域课件;函数的返回值只能带回一个结果,如果程序需要函数返回多个值,应该怎么办呢?实际上,上面的Swap函数可以看作是返回了两个值。所以解决这个问题的方法之一就是用指针来传递函数的参数。通过指针来改变主调函数里的变量的值,实际上就是向主调函数返回了多个值。;函数的引用传递调用 ;#include iostream
using namespace std;
void Swap(int ra,int rb);
void main()
{
int a= 10;
int b = 20;
cout交换前a=a,b=bendl;
Swap(a,b);
cout交换后a=a,b=bendl;
};void Swap(int
您可能关注的文档
- Book3 Unit1 I Fresh Start课件.ppt
- Book3Unit10课件.ppt
- book3_my_friends课件.ppt
- border-radius box-shadow 属性详解课件.ppt
- bright_star明星-济慈课件.ppt
- BSHI 2002 Biostatistics Workshop [MTevfik DORAK]课件.ppt
- Building Strong Brands-法则七八课件.ppt
- C++ Builder 基本图形编程课件.ppt
- Book1 Module2 My New Teachers Introduction Reading 语言点 练习课件.ppt
- C++ 面向对象程序第13章课件.ppt
原创力文档


文档评论(0)