C 函数引用参数传递Error——存在正文时不允许未命名的原型参数

C 函数引用参数传递error

问题描述:

  在test.c中,定义函数并为函数传引用参数,代码如下:

void test(int& a){
	//....
	a = 666;
}

  结果在定义时IDE便提示error:
  1、请输入")" C/C++(18)
  2、存在正文时不允许未命名的原型参数 C/C++(141)


原因分析:

  .c文件为纯C语言,不支持引用。


解决方案:

  1、将*.c文件重命名为*.cpp文件。
  2、将引用传参改为指针传参,即:

void test(int* a){
	//....
	*a = 666;
}

  关于C函数参数传递方式总结如下:
  (1)传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值。
  (2)传址,就是传变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的地址,因为对指针所指地址的内容的改变能反映到函数外,也就是能改变函数外的变量的值。
  (3)传引用,实际是通过指针来实现的,能达到使用的效果如传址,可是使用方式如传值。
  说几点建议:如果传值的话,会生成新的对象,花费时间和空间,而在退出函数的时候,又会销毁该对象,花费时间和空间。
  示例如下(test.cpp):

#include<stdio.h>
void change(int*a, int&b, int c)
{
      c=*a;
      b=30;
      *a=20;
}
int main ( )
{
      int a=10, b=20, c=30;
      change(&a,b,c);
      printf("%d,%d,%d",a,b,c)return 0}
//结果:20  30  30
  • 29
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值