Omk*_*ant 1 c++ arrays reference
问题是制作10个整数的数组,这很好
int array[10];
Run Code Online (Sandbox Code Playgroud)
现在的问题是
如何使一个reference
到array
我上面声明?
我试过这个
int &ra = a;
Run Code Online (Sandbox Code Playgroud)
但它给我的错误...请提供有关此错误,以及如何使细节reference
的array
.
int (&ra)[10] = a;
Run Code Online (Sandbox Code Playgroud)
另外,您可以使用typedef将其分为"10个整数数组"的类型并在其中引用,如:
typedef int int10[10];
int10& my_ref = a;
Run Code Online (Sandbox Code Playgroud)
你的问题int &ra = a;
是,它告诉编译器创建类型的引用int
是指array of 10 ints
......他们只是不一样的东西.考虑到sizeof(int)
十分之一的十分之一int
- 他们占用不同的内存量.您在参考类型中要求的内容可以由特定字符满足,如int& ra = a[0];
.
我很欣赏它有点令人困惑int* p = a;
- 为了兼容较少类型安全的C,指针可用于访问单个元素或数组,尽管不保留任何有关数组大小的信息.这是选择引用的一个原因 - 它们在指针上添加了一些安全性和功能性.
对于增加功能的示例,您可以获取sizeof(my_ref)
并获取int
数组中的字节数(10 * sizeof(int)
),而sizeof p
将为您提供指针(sizeof(int*)
)和的大小sizeof *p == sizeof(int)
.你可以使用这样的代码"捕获"数组维度,以便在函数中使用:
template <int N>
void f(int (&x)[N])
{
std::cout << "I know this array has " << N << " elements\n";
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2704 次 |
最近记录: |