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

时间:2015-01-13 17:43:04

标签: c++

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

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

这样写它可以让我以后使用countof(arr)

我试着在一个声明中写下来,而下面是我失败的尝试。我知道这是错误的“&”应该在“int”和“[0x10]”中,而不是在arr1上,但可以在一个语句中写入它;

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

2 个答案:

答案 0 :(得分:8)

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

所以:

int (&arr1)[0x10] = *reinterpret_cast<int (*)[0x10]>(mypointer);

答案 1 :(得分:-1)

// 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;
}