两者究竟有什么区别???

RichRiver 2004-08-16 04:02:26
1。
int a;
func(&a)
{
。。。
}

2.
int *a;
func(a)
{
。。。
}

不好意思,两者究竟有什么区别??
是不是结果都一样????????

...全文
203 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
健之 2004-08-17
  • 打赏
  • 举报
回复
简单说,引用就是别名,即同一个东西有不同的名字,因此,当将虚参定义为引用时,在函数中虚参和实参就是同一个东西了,函数中可以对实参进行修改。当然,在实现上其实就是实现了传址调用。而在传统的c语法中,由于参数传递是传值的,函数中的虚参与实参没有关系,若要完成对实参的修改,则只能将虚参定义为指针,从而间接地进行修改。
RichRiver 2004-08-17
  • 打赏
  • 举报
回复
哦,呵呵
其实我就是想问传引用和传参数究竟区别在哪里?有吗?:)

8好意思阿!
mmgold 2004-08-16
  • 打赏
  • 举报
回复
1。
int a;
...
func(&a) //这个&别名,传的是引用
{
...
}

2.
int *a;
...
func(a)
{
...
}
antijpn 2004-08-16
  • 打赏
  • 举报
回复
楼主那个是什么东西函数定义?老式参数表也不是这么用的阿
libbyliugang 2004-08-16
  • 打赏
  • 举报
回复
从fun()角度来看串给fun()的参数没有区别:
反正都是int*型指针fun()只管接收不管是怎么
变成int*的;
malligator 2004-08-16
  • 打赏
  • 举报
回复
我更不明白了!!·#¥%……*

1。
int a;
...
func(&a) // 这是函数定义还是函数调用啊?
{
...
}

2.
int *a;
...
func(a) //这是函数定义还是函数调用啊?
{
...
}

函数定义:
func(int *a)
{
.
.
.
}
函数调用:
func(a);
或者
function(*a);
或者
function(&a)
aganpro 2004-08-16
  • 打赏
  • 举报
回复
最好给出两个func 的声明塞!
健之 2004-08-16
  • 打赏
  • 举报
回复
你再一说我反而不明白了,从你给出地代码看你的func定义的参数应该是一个int *呀。而1你传递了int a的地址,2你直接用int *a作为实参,这两种方士都是符合func的参数定义的。你到底要问什么呢?
RichRiver 2004-08-16
  • 打赏
  • 举报
回复
唉,我图个简单
感觉大家有点跑蹄了
那我改改:)

1。
int a;
...
func(&a)
{
...
}

2.
int *a;
...
func(a)
{
...
}
健之 2004-08-16
  • 打赏
  • 举报
回复
各位仔细点,他写的是
int a;
func(&a) //这里是对a取地址,传递的是指向a的指针
{
。。。
}


int *a;
func(a) //这里由于a被定义为指针,所以没有使用取址符,同样传递给func的是指针
{
。。。
}
所以如果函数定义是正确的话,应该被定义为func(int*)。
而上述两种写法的差别在于,1)直接定义了一个变量a,然后把a的地址传递给func了,在func中可以使用和修改a的值。而2)仅仅定义a为指针,如果没有将a指向某个整数的话,会引起错误的。
sharkhuang 2004-08-16
  • 打赏
  • 举报
回复
a有地址*a没地址
aganpro 2004-08-16
  • 打赏
  • 举报
回复
难道大家都看错了^_^
引用应该是这样的吧:
int a
func(a){
.....
}

它这里是传的&a啊
steel007 2004-08-16
  • 打赏
  • 举报
回复
二者都是传指针,但是还是有点不同:
1.传的是变量a的指针,于是在函数func中可以对a产生影响
2.传的是一个指针变量的值,而此指针变量没有初始化,在func中使用会出现问题~
snow810211 2004-08-16
  • 打赏
  • 举报
回复
引用更容易理解
aganpro 2004-08-16
  • 打赏
  • 举报
回复

看错了哈
都是传指针,没区别:)
doolin 2004-08-16
  • 打赏
  • 举报
回复
引用作为函数参数通常能使代码看起来更直观,比如以下函数:
void swap(int &a,int &b)
{
int temp = a;
b = temp;
a = b;
}
aganpro 2004-08-16
  • 打赏
  • 举报
回复
分特!上面有误!
如果你的函数是两个:
一个是void func(int & a);
一个是void func(int * a);的话
上面的解释没错!
如果两个func都是void func(int * a);的话
上面两者没区别,都是传指针 &是取a 的地址
aganpro 2004-08-16
  • 打赏
  • 举报
回复
传指针和传引用!
在这里传引用的效率要高点

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧