以下实现一个 mbarray[iblock][id][ivar]形式的三维数组的连续空间开辟,只是第二
位的尺寸不是一致的。
这其中以指针的方式将mbarray传进去,如果我要以引用的方式传递。怎么搞呢?怎么定
义数组指针的引用?
template<typename T, int nvar>
int allocMultiBlocksArray( const MULTIBLOCK_TYPE *grid, T (***mbarray)[nvar])
{
size_t ncells;
ncells = grid->active_allcells;
auto pdata = new T[ ncells ][nvar];
auto pstart = pdata;
typedef T (*Tbarray)[nvar];
*mbarray = new Tbarray[grid->blocks];
for (int b = 0; b < grid->blocks; b++){
BLOCK_TYPE *blk = GetBlkPtr(grid, b);
if (!blk->active) (*mbarray)[b]=nullptr;
else{
(*mbarray)[b] = pdata;
pdata += blk->num_allcells;
}
}
return ncells;
}
--
FROM 222.90.67.*