加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

函数(参数传递)--C++复习(5)

发布时间:2020-12-16 09:15:31 所属栏目:百科 来源:网络整理
导读:一、参数传递 ? ? ?? 1.非引用形参,则是复制实参的值,函数不会修改实参的值;引用形参,则是实参的别名,将会修改实参的值。 ? ? ?? 2.指针形参,修改指针形参不会改变实参指针,但可以改变实参指向的对象: 1 void swap( int *a, int * b) 2 { 3 int temp

一、参数传递

? ? ?? 1.非引用形参,则是复制实参的值,函数不会修改实参的值;引用形参,则是实参的别名,将会修改实参的值。

? ? ?? 2.指针形参,修改指针形参不会改变实参指针,但可以改变实参指向的对象:

 1 void swap(int *a,int *b)
 2 {
 3     int temp;
 4     tenp=*a;
 5     *a=*b;
 6     *b=temp;
 7     cout<<*a<<","<<*b<<endl;//输出2,1
 8     int x=100;
 9     *a=&x;
10     *b=&x;//修改形参指针
11 }
12 
13 int main(){
14     int i=1,j=2;
15     cout<<&i<<","<<&j<<endl;
16     swap(&i,&j);
17     cout<<i<<","<<j<<endl;//输出2,1,改变了实参指向的对象
18     cout<<&i<<","<<&j<<endl;//但是没有改变实参的地址
19     system("pause");
20     return 0;
21 }
22    

? ? ?? 3.const形参,在调用函数时,如果函数使用非引用非const形参,则既可以传递const实参,也可以传递非const实参;

? ? ?? 但如果函数使用非const引用形参,则不能通过const对象进行调用,也不能通过右值进行调用。 ? ? ??

1 int  abc(int &value)
2 {
3     return  ++value;
4 }
5 
6 const int v1=100;
7 //int r=abc(v1);错误,v1是const类型
8 //int r=abc(0);错误,0是右值

? ? ?? 如果将形参定义为const类型,则在函数中,不能改变实参的局部副本。

? ? ?? 4.使用引用形参返回额外信息:函数的返回值只有1个,如果想要函数有多个返回值,可使用引用形参来实现。

? ? ?? 5.利用const引用避免复制和修改。

? ? ?? 对于大型对象,复制非常消耗时间,可以使用引用来避免复制,同时如果不想让函数修改该实参可以使用const。

? ? ?? 6.指向指针的引用:int *&v1,从右向左理解,v1是一个引用,与指向int型对象的指针相关联。因此我们可以用它来交换两个指针的值。

? ? ?? 7.数组形参:由于数组具有不可复制特性,因此不能当做形参;但是由于数组名自动转换成指向第一个元素的指针,所以数组函数可以通过指针来处理。

? ? ?? void values(int *);?? void values(int [ ]);?? void values(int [10]); //这是等价的

? ? ?? 8.数组实参的处理:

? ? ?? (1)使用开始指针和结束指针,void values(const int *begin,const int *end);可以以此来遍历

? ? ?? (2)指定数组大小,void values(const int ia[ ],size_t size);可以以此来遍历

? ? ?? 9.main形参:

? ? ?? int main(int argc,char *argv[ ]){}; ?? argc:形参个数,argv:形参数组,字符串数组,调用main时可以传递若干个字符串过来,char *argv相当于代表字符串。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读