C++函数调用方式
来源:互联网 发布:future java 编辑:程序博客网 时间:2024/05/18 00:50
</pre> <span style="font-size:14px">直接调用(传值调用)</span><p></p><p><strong><span style="font-size:18px">函数调用方式</span></strong>:> 使用别名的引用调用</p><p> <span style="font-size:14px"> 间接调用(引用调用)></span></p><p> 使用指针的引用调用</p><p></p><ul><li><span style="font-size:24px"><strong>直接调用</strong></span></li></ul><p></p><p>当参数按值传递时,被调用函数创建一个新的与参数同类型的变量,并把参数值复制给它,即将实参的值传给形参变量。当被调用函数不需要修改调用程序中的原先变量时,按值传递是有用的。以下程序说明如何按值调用函数。</p><p></p><pre name="code" class="cpp">#include <iostream>using namespace std;int main(){ //函数的传值调用void Swap(int num1, int num2);int num1,num2;cout<<"输入第一个参数:\t";cin>>num1;cout<<"输入第二个参数:\t";cin>>num2;cout<<"/n在main函数内,在swap调用之前:"<<endl;cout<<"num1="<<num1<<"\tnum2="<<num2<<endl;Swap(num1,num2);cout<<"/n在main函数内,在swap调用之前:"<<endl;cout<<"num1="<<num1<<"\tnum2="<<num2<<endl;system("pause");return 0;}void Swap(int num1,int num2){int temp;temp = num1;num1 = num2;num2 = temp;cout<<"/n在main函数内,在swap调用之前:"<<endl;cout<<"num1="<<num1<<"\tnum2="<<num2<<endl;}
运行结果:
说明:在main函数中,从键盘接受两个数10和20赋值给变量num1和num2,以这两个变量为实参调用函数Swap函数。当调用Swap()函数时在内存中产生两个新的内存单元,即Swap()函数形参变量num1和num2,将实参变量num1和num2的值10和20分别赋给Swap()函数形参变量num1和num2,在Swap()函数中交换了形参变量num1和num2的值,即num2=10,num1=20.当Swap()函数执行结束时,形参变量num1和num2的生命周期结束,将内存返给系统,以备他用。而main()函数中的两个变量num1和num2的值一直没有发生变化。
因此,调用函数中程序的变量值在作为值传递时是不受影响的。
- 使用别名的引用调用
可以用别名运算符(&)给一个变量两个名字。比如说,一个女人名字叫name,而她的父亲叫她daughter,她的丈夫叫她wife,daughter,wife称为名name的别名,名字和别名实际上是指同一个实体。
必须在命名别名的同时初始化(不然就出错)。例:
int number = 10;//声明变量number并初始化int &num = number;//声明变量number的别名
这里,称num是number的别名,或称num是number的别名引用。
使用别名作为函数的参数,调用此函数称为“”使用别名的引用调用“”。例如定义函数:
void Swap(int &num1, int &num2){ .....}此函数的声明必须在参数的数据类型之后有一个&符号。例如声明函数:
void Swap(int &, int &);在函数调用时不使用&符号。(参见线面的程序)
注:使用别名的引用调用在调用函数时,实际上是为实参指定一个别名(函数的形参),在内存中什么也没做。在被调函数内,对形参(别名)的任何操作直接反应到实参,因为它们所指向的是同一个内存单元。
以下程序使用别名引用调用:
#include <iostream>using namespace std;int main(){ //使用别名的引用调用 void Swap(int&, int&); <span style="color:#33ff33;">//声明此函数时必须在参数数据类型之后加&</span>int number1,num2;cout<<"输入第一个参数:\t";cin>>number1;cout<<"输入第二个参数:\t";cin>>num2;cout<<"/n在main函数内,在swap调用之前:"<<endl;cout<<"number1="<<number1<<"\tnum2="<<num2<<endl;Swap(number1,num2); <span style="color:#33ff33;">//调用时不可使用&</span>cout<<"/n在main函数内,在swap调用之前:"<<endl;cout<<"number1="<<number1<<"\tnum2="<<num2<<endl;system("pause");return 0;}void Swap(int &num1,int &num2){int temp;temp = num1;num1 = num2;num2 = temp;cout<<"/n在main函数内,在swap调用之前:"<<endl;cout<<"num1="<<num1<<"\tnum2="<<num2<<endl;}
- 用指针的引用调用
一个变量或一个内存单元,即=既有内存标识符(变量名),也有内存地址,可用地址运算符(&)给出一个变量的地址,将变量的地址赋给一个指针,这样不仅可以使用变量名访问内存(直接访问),也可以使用间接访问符(*)访问内存(间接访问)。变量名和变量的地址指向同一个内存。
必须形同类型的变量赋给相同类型的指针。例:
int number = 10;//声明变量numberint *P = &unmber;//声明指针变量P并将变量number的地址赋给指针变量P这里,称P是number的指针,或称*P是number的指针引用。
使用指针作为函数的参数,调用此函数称为“使用指针的引用调用”。例:
void Swap(int *P1, int *P2){ ...}此函数的声明必须在参数数据类型之后加一个(*)符号,例:
void Swap(int *, int *)在函数调用时,在变量前必须使用&符号;
int number1 = 10;int number2 = 20;Swap(&number1, &number2);...使用指针的引用调用,在调用函数时实际上是将实参变量的地址赋给被调函数形参的指针,在内存什么也没做。在被调函数内,对形参(指针)的任何操作,直接反应到实参,因为它们指向的是同一个内存单元。(和别名引用调用有点像)
程序参考别名调用
参《C++语言编程基础教程》-宋振会著
- c 函数调用方式
- C/C++函数调用方式
- C/C++函数调用方式
- C/C++函数调用方式
- C/C++ 函数调用方式
- C/C++函数调用方式
- C/C++函数调用方式 内幕
- C/C++函数调用方式内幕
- c/c++函数调用传递方式比较
- C语言函数调用方式的区别
- c中调用c++函数方式
- c++:(各种)构造函数的调用方式
- 函数调用的两种方式PASCAL调用方式和C调用方式
- C语言函数调用三种方式:传值调用,引用调用和传地址调用
- C语言函数调用三种方式:传值调用,引用调用和传地址调用
- C语言函数调用三种方式:传值调用,引用调用和传地址调用
- C语言函数调用三种方式:传值调用,引用调用和传地址调用
- C语言函数调用三种方式:传值调用,引用调用和传地址调用
- 绘制图片时使用双缓冲机制,避免闪烁
- Android一个应用跳转另外一个应用
- 如何查看、添加、修改、删除电脑内部路由
- 性能分析-内存分析leakcanary
- 一款下拉刷新以及上拉加载的控件库,扩展性强,使用简单。并附带有可以添加 header 和 footer 的 Recyclerview
- C++函数调用方式
- PullToRefreshListView的使用
- 简单记录一下,cenos 7搭建ftp服务器
- 转--listener、filter、servlet、interceptor区别
- JAVA四种方式访问XML(DOM,SAX,JDOM,DOM4J)
- 获取js文件中指定的数据
- Linux 常用shell小脚本
- 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'tb_MyInvoices' 中的标识列插入显
- Ubuntu设置root登陆