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

如题所述

void func(int *a,int *b)
用这样的指针参数的函数传递的就是地址,像楼主这样定义是不合法的,你定义一个变量时,地址是由编译器自动分配的,你这个就比如:int &a,a本身就是不存在的,所以也就没有地址可言,你直接用&a对他取地址,这当然不合法了
如果你想实现"函数功能为交换两变量的值"这样的功能的话,用void func(int *a,int *b)就完全可以了,比如你想交换num1和num2两个变量的值,那你调用func函数的时候调用格式就是func(&num1,&num2);就可以实现交换值的目的了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-27
因为C没有定义int &这种类型,它是C++新增类型,叫“引用类型”。
第2个回答  2013-05-16
想要普通参数可以使用
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,
在应用函数时单个数据可以直接引用,不必使用地址。
比如你定义函数
void func(int a,int b)
则可以在调用时
void func(a,b)
如果你定义
void func(int *a,int *b)
非要用的话,只能先给其指针参数
int *p=&a,*q=&b;
然后
void func(*p,*q);完毕
第3个回答  2013-05-16
&a意思获取a的地址进行处理,显然它是一个动作,属于引用类型,不是以一个变量出现,而声明只能声明变量名(本身以名词来理解),不能声明引用类数据类型(以动词来理解。)
第4个回答  2013-05-16
c语言不支持引用类型
换指针吧
void func(int *a,int *b)追问

那为何可以定义相应的变量呀?

追答

c里面不能用&定义变量的吧,只能用他来赋值,此时表示取地址,跟变量定义的时候引用的概念不一样的。
如:
int b;
int *a=&b;这样是表示指针a指向b的地址,这样c里面是可以的。
int &b=a;表示b是a的别名,即引用,c++里面才有的概念,这样c里面是不行的吧

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网