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);
}
结果:
可以试试下面代码,注意指针和引用的区别,指针一般是地址 引用是变量本身
#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后缀就可以了