假设我有一些指针,我想将其重新解释为静态维数组引用:
double *p;
double (&r)[4] = ?(p); // some construct?
// clarify
template< size_t N> void function(double (&a)[N]);
...
double *p;
function(p); // this will not work.
// I would like to cast p as to make it appear as double[N]
有可能这样做吗? 我该怎么做?
答案 0 :(得分:11)
很难看:
double arr[4];
double* d = arr;
double (&a)[4] = *static_cast<double(*)[4]>(static_cast<void*>(d));
确保数组类型与指针原来的匹配。
答案 1 :(得分:-3)
是的,它被称为vector
:)
std::vector<double> myVariableArray(4)
编辑:重读,看起来你想要获得声明数组的大小。你不能那样做 - 这是你偶尔可以使用的模板方法功能。由于double *
甚至不需要指向double
,因此编译器在任何情况下都无法给出明智的答案。
答案 2 :(得分:-3)
double *array;
...
...
int sizearray = sizeof(array)/sizeof(double);