假设我有int ****ptr;
。我想在这个ptr的末尾分配一个动态的一维数组,所以当我输入***ptr[4]
时,我会产生一个元素。请帮忙。
P.S。
我没有在我的实际应用程序中使用此代码,这只是一个理解指针如何工作的智力练习。
我不能直接***ptr = malloc(sizeof(int)*size_of_arr));
对吗?因为这样我将无法产生任何元素
答案 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;