C++编程语言中的函数可以以多种传递的方式来实现一些特定功能的实现。我们今天就为大家总结了这些传递方式,让大家能够对这方面的知识有一个深刻的理解。首先就让我们一起来看看C++函数传递的相关方式吧、
创新互联服务项目包括东兰网站建设、东兰网站制作、东兰网页制作以及东兰网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,东兰网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到东兰省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
C++函数传递的方式总共有三种,分别为:值传递、指针传递和引用传递。
值传递:
- void fun(int x)
- {
- x += 5; //修改的只是y在栈中copy x,x只是y的一个副本,在内存中重新开辟的
一块临时空间把y的值送给了x;这样也增加了程序运行的时间,降低了程序的效率。- }
- void main(void)
- {
- int y = 0;
- fun(y);
- cout<<\"y = \"<
- }
指针传递:
- void fun(int *x)
- {
- *x += 5; //修改的是指针x指向的内存单元值
- }
- void main(void)
- {
- int y = 0;
- fun(&y);
- cout<<<<\"y = \"<
- }
引用传递:
- void fun(int &x)
- {
- x += 5; //修改的是x引用的对象值 &x = y;
- }
- void main(void)
- {
- int y = 0;
- fun(y);
- cout<<<<\"y = \"<
- }
看了C++函数传递后我们继续来谈“const只能用于修饰输入参数”的情况。#t#
当输入参数用“值传递”方式时,我们不需要加const修饰,因为用值传递时,函数将自动用实际参数的拷贝初始化形式参数,当在函数体内改变形式参数时,改变的也只是栈上的拷贝而不是实际参数。
但要注意的是,当输入参数为ADT/UDT(用户自定义类型和抽象数据类型)时,应该将“值传递”改为“const &传递”,目的可以提高效率。
例如:
void fun(A a); //效率底。函数体内产生A类型的临时对象用于复制参数 a,但是临时对象的构造、复制、析构过程都将消耗时间。
void fun(A const &a); //提高效率。用“引用传递”不需要产生临时对象,省了临时对象的构造、复制、析构过程消耗的时间。但光用引用有可能改变a,所以加const
当输入参数用C++函数传递中的“指针传递”方式时,加const修饰可防止意外修改指针指向的内存单元,起到保护作用。
例如:
void funstrcopy(char *strdest,const char *strsrc) //任何改变strsrc指向的内存单元,编译器都将报错
些时保护了指针的内存单元,也可以保护指针本身,防止其地址改变。
例如:
- void funstrcopy(char *strdest,const char *const strsrc)
以上就是对C++函数传递的三种方式的介绍。
当前文章:C++函数传递三种方式解读
本文地址:http://www.shufengxianlan.com/qtweb/news34/499284.html
成都网站建设公司_创新互联,为您提供网站导航、手机网站建设、移动网站建设、面包屑导航、虚拟主机、域名注册
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联