我定义了一个中间typedef,以便定义对固定大小数组的引用。
typedef int CI[0x10];
CI& arr=*(CI*)mypointer;
这样写它可以让我以后使用countof(arr)
我试着在一个声明中写下来,而下面是我失败的尝试。我知道这是错误的“&”应该在“int”和“[0x10]”中,而不是在arr1上,但可以在一个语句中写入它;
int (arr1&)[classInfoN]=*(CI*)mypointer;
答案 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;
}