返回对数组的引用与指向数组的指针

时间:2015-03-17 10:02:55

标签: c++ arrays pointers reference

我正在学习c ++,而我的教科书(c ++ primer)提出了这个例子:

int odd[] = {1,3,5,7,9};
int even[] = {0,2,4,6,8};
// returns a pointer to an array of five int elements
auto arrPtr(int i) -> int(*)[5]
{ return (i%2) ? &odd : &even;}

并且作为一个exerices要求更改函数,以便它返回对数组的引用:

auto arrPtr(int i) -> int(&)[5]
{ return (i%2) ? odd : even;}

我不明白为什么你必须返回数组对象才能将它转换为对该数组的引用(如果我正确理解代码)。不应该是阵列的内存地址" fit"完美的参考类型?

1 个答案:

答案 0 :(得分:1)

  

我不明白为什么你必须返回数组对象才能将它转换为对该数组的引用(如果我正确理解代码)。

因为这是初始化引用的方式:通过指定引用的对象,没有额外的装饰。指针是从其他指针初始化的,这就是为什么你需要&获取一个对象的地址,产生一个指针。

  

数组的内存地址不应该在引用类型中完全“适合”吗?

是的,引用通常以与指针相同的方式实现。但为什么这会影响他们的语法?它们在概念上是不同的东西(对象的替代名称,而不是包含地址的值),具有不同的语法。