gpt4 book ai didi

c++ - 在 C++ 中引用数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:19:29 24 4
gpt4 key购买 nike

问题是制作一个由 10 个整数组成的数组,这没问题

int array[10];

现在的问题是

如何对我在上面声明的数组进行引用

我试过了

int &ra = a;

但是它给了我错误...请提供有关此错误的详细信息以及如何对 array 进行 reference

最佳答案

int (&ra)[10] = a;

或者,您可以使用 typedef 将其分隔为“10 整数数组”的类型并对其进行引用,如:

typedef int int10[10];
int10& my_ref = a;

您的 int &ra = a; 的问题是它告诉编译器创建一个类型为 int 的引用,该引用引用一个包含 10 个整数的 数组...它们只是不同的东西。考虑 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";
}

关于c++ - 在 C++ 中引用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13081837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com