用函数指针代替C++的引用参数 参数传递

Code:
  1. /* f.c 用函数指针代替C++的引用参数 */  
  2. #include<stdio.h>   
  3. void fa(int a) /* 在函数中改变a,将不会带回主调函数(主调函数中的a仍是原值) */  
  4. {   
  5.   a=5;   
  6.   printf("在函数fa中:a=%d/n",a);   
  7. }   
  8.   
  9. void fb(int *a) /* a为指针类型,在函数中改变*a,改变后的值将带回主调函数 */  
  10. {   
  11.   *a=5;   
  12.   printf("在函数fb中:*a=%d/n",*a);   
  13. }   
  14.   
  15. void main()   
  16. {   
  17.   int n=1;   
  18.   printf("在主程中,调用函数fa之前:n=%d/n",n);   
  19.   fa(n);   
  20.   printf("在主程中,调用函数fa之后,调用函数fb之前:n=%d/n",n);   
  21.   fb(&n); /* 实参为n的地址 */  
  22.   printf("在主程中,调用函数fb之后:n=%d/n",n);   
  23. }  

第9行,void   fb(int   *a) 这种形式容易形成误解,其实若写作
void   fb(int*   a)
就好理解了。这里a为指针类型,在调用时传递一个地址就可以了。

第21行,&n就是一个地址,函数fb()修改的是实际的变量n的值。

【相关知识】指针类型与取地址:
&是取地址运算符,&a为变量a的地址。
*是指针运算符,*p为指针变量p所指向的存储单元中的内容。而指针变量p中一般只存放地址。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值