如何在不使用指针的情况下编写对10个整数数组的引用?

Ole*_*siy 1 c++ arrays reference c++11

对不起,如果这是一个非常愚蠢的问题,但由于某种原因,我无法理解如何做到这一点.

我试着编写对我来说最有意义的代码,但它不起作用:

int numbers[10]{};

int& numbers_ref  { numbers };   // nope
int  numbers_ref& { numbers };   // nope 
int& numbers_ref  { &numbers };  // nope
int  numbers_ref& { &numbers };  // nope
Run Code Online (Sandbox Code Playgroud)

编辑:我尝试使用[]但我仍然无法使用它而不使用auto:

int& numbers_ref[]  { numbers };   // nope
(int  numbers_ref[])& { numbers };   // nope 
(int numbers_ref[10]) &  { numbers };  // nope
int []numbers_ref& { &numbers };  // nope
Run Code Online (Sandbox Code Playgroud)

我可以获得参考的唯一方法是P0W说:

auto& numbers_ref= numbers;  // yay
Run Code Online (Sandbox Code Playgroud)

PS 谢谢克里斯,这正是我想要的,但无法猜出语法:

int (&numbers_ref)[10] = numbers;  // exactly right! 
Run Code Online (Sandbox Code Playgroud)

P0W*_*P0W 5

typedef int numbers_type[10];
numbers_type& numbers_ref = numbers;
Run Code Online (Sandbox Code Playgroud)

编辑:(由克里斯建议)

int (&numbers_ref) [10] = numbers; // If you don't want typedef 
Run Code Online (Sandbox Code Playgroud)

在C++ 11中:

auto& numbers_ref= numbers;
Run Code Online (Sandbox Code Playgroud)

  • 或者只是`int(&numbers_ref)[10]`如果你不想要类型别名. (2认同)