请问各位大侠,为何C语言中不能使用如下语句: void func(int &a,int &b); 提示参数有问题。。。

[复制链接]
查看11 | 回复5 | 2017-12-28 09:59:53 | 显示全部楼层 |阅读模式
void func(int *a,int *b)用这样的指针参数的函数传递的就是地址,像楼主这样定义是不合法的,你定义一个变量时,地址是由编译器自动分配的,你这个就比如:int &a,a本身就是不存在的,所以也就没有地址可言,你直接用&a对他取地址,这当然不合法了如果你想实现"函数功能为交换两变量的值"这样的功能的话,用void func(int *a,int *b)就完全可以了,比如你想交换num1和num2两个变量的值,那你调用func函数的时候调用格式就是func(&num1,&num2);就可以实现交换值的目的了...
回复

使用道具 举报

千问 | 2017-12-28 09:59:53 | 显示全部楼层
因为C没有定义int &这种类型,它是C++新增类型,叫“引用类型”。...
回复

使用道具 举报

千问 | 2017-12-28 09:59:53 | 显示全部楼层
想要普通参数可以使用void func(int a,int b)想要使用地址参数改变相应参数,则void func(int *a,int *b)当然也可以使用void func(int a[],int b[])&a,&b是指将地址上的信息体现出来,如你定义了int a,b;就可以使用int *p=&a,*q=&b,...
回复

使用道具 举报

千问 | 2017-12-28 09:59:53 | 显示全部楼层
&a意思获取a的地址进行处理,显然它是一个动作,属于引用类型,不是以一个变量出现,而声明只能声明变量名(本身以名词来理解),不能声明引用类数据类型(以动词来理解。)...
回复

使用道具 举报

千问 | 2017-12-28 09:59:53 | 显示全部楼层
c语言不支持引用类型换指针吧void func(int *a,int *b)...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行