missing’)’before ‘&’是怎么回事

img


求大家帮看一下错哪了,一直显示missing’)’before ‘&’

c文件不支持用引用类型
要么将函数参数从引用改为指针
要么将文件的后缀名从.c改为.cpp

.C类文件是C语言文件,参数前面的&表示引用,C语言没有引用的概念,有两种修改方法:
(1)先把你的.c文件从工程里移除(不是删除),然后把你的文件扩展名.c改为.cpp,再重新把cpp文件添加到工程中,重新编译即可
(2)把参数改为指针,main函数不用改,reference_pass()修改如下:

void reference_pass(int* p);

void reference_pass(int* b)
{
    printf("\n");
    printf("b和a....");
    *b = 0xff; //修改
    printf("修改后,形参b=%x\n", *b); //修改
}

弱弱的回一句,改了一点点就可以直接运行出来了!

#include<stdio.h>
#include <iostream>
void reference_pass(int &p);
int main()
{
    int a = 0x10;
    printf("实参a=%x\n",a);
    printf("a的地址是%x\n",&a);
    reference_pass(a);
    printf("自定义函数执行完毕后,实参a=%x\n",a);
    system("pause");
    return 0;
}
void reference_pass(int &b)
{
    printf("\n引用型参数b是实参a的别名,即a=b=%x\n",b);
    printf("b和a的地址相同,是%x\n",&b);
    b=0xff;
    //形参前面要取地址&
    printf("修改后,形参b=%x\n",&b);    
    // 实参就是这样
    printf("修改后,实参b=%x\n",b);
}

结果:

img

可以试试下面代码,注意指针和引用的区别,指针一般是地址 引用是变量本身

#include<stdio.h>

void reference_pass(int *b)
{
int a = 0x10;
printf("\n引用型参数b是实参a的别名,即a=b=%x\n", *b);
printf("b和a的地址相同,是%x\n", &b);
*b = 0xff;
printf("修改后,形参b=%x\n", *b);

}
int main()
{
int a = 0x10;
printf("实参a=%x\n", a);
printf("a的地址是%x\n", &a);
reference_pass(&a);
printf("\n自定义函数执行完毕后,实参a=%x\n", a);

return 0;

}

不是形参不能这要写吧,是指针的话应写成

int*p

其实你把 文件名改为.cpp后缀就可以了