首先,先定义一个结构体
struct myPtr
{
int *x = {nullptr};
int *y = { nullptr };
int *z = { nullptr };
};
给自定义结构体开辟空间
void mallocBuf(myPtr** _ptr,int arraySize)
{
//开辟空间,并赋值.
*_ptr = new myPtr();
(*_ptr)->x = new int[5];
(*_ptr)->y = new int[5];
(*_ptr)->z = new int[5];
for (int i = 0; i < 5; i++)
{
(*_ptr)->x[i] = rand() % 10;
(*_ptr)->y[i] = (*_ptr)->x[i] +1;
(*_ptr)->z[i] = (*_ptr)->x[i] +2;
}
}
接下来测试代码
void test()
{
myPtr **_ptrList = new myPtr*[5];
for (int i = 0; i < 5; i++)
{
mallocBuf((_ptrList + i), 5);
}
for (int i = 0; i < 5; i++)
{
std::cout << "---------------" << i << std::endl;
if (_ptrList != nullptr)
{
for (int j = 0; j < 5; j++)
{
if (_ptrList[i].x != nullptr && _ptrList[i].y != nullptr&& _ptrList[i].z != nullptr)
{
std::cout << _ptrList[i].x[j] << " " << _ptrList[i].y[j] << " " << _ptrList[i].z[j] << " |";
}
else
{
std::cout << "_ptrList[i].x is nullptr" << std::endl;
}
}
}
}
**//释放空间.**
for (int i = 0; i < 5; i++)
{
if (_ptrList[i] != nullptr)
{
**//释放内部空间**.
delete[] _ptrList[i]->x;
delete[] _ptrList[i]->y;
delete[] _ptrList[i]->z;
delete _ptrList[i];
}
}
delete[]_ptrList;
}
这个就是二维指针的简单使用方式