函数的形参(普通形参、指针形参、引用形参)

int n=10;

add1(n);

1、普通形参

void add1(int v1) { v1+=1;/对实参无影响 }
这是最普通的形参方式,形参仅仅为实参的一个副本,对形参的任何操作不会修改实参的值。例中对v1的操作只是修改了实参的一个副本。实参不变

int *p=&n;

add2(p);//p为指向n的指针

或者直接add2(&n)

2、指针形参
void add2(int *p) { *p+=1;//实参才会变 p+=1;//对实参无影响 (*p)++;//实参才会变

}
使用指针做为函数的形参,只有对指针所指对象进行的操作才会改变实参的值。要实现改变实参,还有一种更安全更自然的方法-引用形参。

//在执行add2(&n)时,系统在内存分配表里增加了一行add2中的p”,其地址为新地址,值为&n。操作*p,即是在操作n了。有点类似引用,*p即为n的一个别名

int a=1,b=2;

swap(a,b);

3、引用形参 void swap(int &a,int &b) { int temp=a; a=b; //会改变实参的值 b=temp; //会改变实参的值 }
引用形参直接关联到其所绑定的对象,而非这些对象的副本。 所以这种方法可以修改实参的值,而且更加直观。

函数的形参和实参具有以下特点:

1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。 2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。 3.实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。 4.函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。故需要手动修改才可。

转载于:https://www.cnblogs.com/daren-godlike/p/3325475.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值