在四重指针中分配数组

时间:2015-09-30 22:48:27

标签: c++

假设我有int ****ptr;。我想在这个ptr的末尾分配一个动态的一维数组,所以当我输入***ptr[4]时,我会产生一个元素。请帮忙。

P.S。 我没有在我的实际应用程序中使用此代码,这只是一个理解指针如何工作的智力练习。 我不能直接***ptr = malloc(sizeof(int)*size_of_arr));对吗?因为这样我将无法产生任何元素

2 个答案:

答案 0 :(得分:1)

int ****ptr;
ptr = new int***();
*ptr = new int**();
**ptr = new int*();
***ptr = new int[size_of_arr];

//access (***ptr)[index]

delete[] ***ptr;
delete **ptr;
delete *ptr;
delete ptr;

答案 1 :(得分:0)

Note that ***ptr[4] and (***ptr)[4] are not the same thing. The index operator ([4]) takes precedence over the dereference operator (*).

int ****ptr;
ptr = new int***[5];
ptr[4] = new int**;
*ptr[4] = new int*;
**ptr[4] = new int;
***ptr[4] = 77;

delete **ptr[4];
delete *ptr[4];
delete ptr[4];
delete [] ptr;