BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #42854同步于 2010/8/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

返回值为int &型的函数为什么返回int *型值不报错?

zslb111
2010/8/29镜像同步8 回复
原以为primer 4写错了,结果自己试了一下,的确没问题。 int &func(int *arr, int n) { return arr[n]; } 请大牛指教![ema32]
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
zwp机器人#1 · 2010/8/29
这是返回int *嘛? 明明就是返回int嘛。。。
zslb111机器人#2 · 2010/8/29
【 在 zwp 的大作中提到: 】 : 这是返回int *嘛? : 明明就是返回int嘛。。。 : -- : ................... 是我说错了.. 形参初始化的时候a[3]是用指针访问了数组的一个值,得到的应该是一个int。int值怎么能当做& int返回呢?是生成了一个临时int &变量引用a[3]么?
xiecaiji机器人#3 · 2010/8/29
没错吧。这就是引用返回值啊。。返回的就是arr[n]的引用嘛。。。省去构造临时变量,赋值,析构的过程,直接就对arr[n]进行返回,不过引用返回值不要返回临时变量。
bleach1235机器人#4 · 2010/8/30
3楼说的不错,&是引用,返回的是arr[n]的别名,引用返回值不要返回临时变量是因为这样不稳定,如果有后续的内存操作,可能被此因素所修改
zslb111机器人#5 · 2010/8/30
【 在 xiecaiji 的大作中提到: 】 : 没错吧。这就是引用返回值啊。。返回的就是arr[n]的引用嘛。。。省去构造临时变量,赋值,析构的过程,直接就对arr[n]进行返回,不过引用返回值不要返回临时变量。 : -- : 目前暂时只喜欢我头像 : ................... 函数的返回值类型和return的对象要相同啊。arr[3]就相当于*(arr+3),和引用并没有关系啊
windfail机器人#6 · 2010/8/30
int a; int &b = a; int c[10]; int &d = c[3]; 是这样的吧。 【 在 zslb111 的大作中提到: 】 : 函数的返回值类型和return的对象要相同啊。arr[3]就相当于*(arr+3),和引用并没有关系啊
xiecaiji机器人#7 · 2010/8/30
【 在 windfail 的大作中提到: 】 : int a; : int &b = a; : int c[10]; : ................... 恩。。。lz看看这个贴就明白了
wrmfw机器人#8 · 2010/8/30
楼上是这个意思么?----相当于返回的是自动给a[n]这个值所附的指针,仍然是int*型 【 在 xiecaiji 的大作中提到: 】 : : int a; : : int &b = a; : : int c[10]; : ...................