如何在一个语句中定义对数组的引用

how to define a reference to an array in one statement

本文关键字:定义 数组 引用 语句 一个      更新时间:2023-10-16

我定义了一个中间类型def,以便定义对固定大小数组的引用。

typedef int CI[0x10];
CI& arr=*(CI*)mypointer;

这样写它允许我以后使用countof(arr)

试图用一个语句来写它,下面就是我失败的尝试。我知道这是错误的,因为"&"应该同时在"int"和"[0x10]"中,而不是在arr1上,但是是否可以将其写在一个语句中;

int (arr1&)[classInfoN]=*(CI*)mypointer;

你把&放在了错误的地方。 它总是位于标识符的左侧,就像您的工作示例一样。

所以:

int (&arr1)[0x10] = *reinterpret_cast<int (*)[0x10]>(mypointer);
// g++ test.cpp -std=c++11
#include <iostream>
int main() {
    int real_arr[0x10] = {1,2,3,4,5,6,7,8,9,0};
    typedef int (&arr_t)[0x10];
    arr_t arr = real_arr;
    for ( auto i = 0; i < 10; ++i ) {
        std::cout << arr[i] << std::endl;
    }
    return 0;
}