#include <iostream>
#include <cstdlib>
#include <new.h>
using namespace std;
const int arrtype = 2;
void initptr(int**& a)
{
a = (int**)malloc(arrtype*sizeof(int*));
if (a == nullptr) {
exit(1);
}
int i;
for (i = 0; i < arrtype; i++)
{
a[i] = (int*)malloc(2 * sizeof(int));
if (a[i] == NULL)
{
for (int j = 0; j < i; j++) {
free(a[j]);
}
free(a);
a = nullptr;
exit(1);
}
}
}
void insertdata(int** a,int arr[])
{
int i, j;
for (i = 0; i < arrtype; i++)
{
for (j = 0; j < arrtype; j++)
{
a[i][j] = arr[ arrtype * i + j];
}
}
}
void dispptr(int **a)
{
int i, j;
for (i = 0; i < arrtype; i++)
{
for (j = 0; j < arrtype; j++)
{
cout << a[i][j]<<" ";
}
}
cout << endl;
}
void freeptr(int**& a)
{
for (int i = 0; i < arrtype; i++)
{
free(a[i]);
}
free(a);
}
int main()
{
int** a;
int arr1[] = { 1,2,3,4 };
initptr(a);
insertdata(a, arr1);
int** b;
initptr(b);
int arr2[] = { 5,6,7,8 };
insertdata(b, arr2);
dispptr(a);
dispptr(b);
freeptr(a);
freeptr(b);
a = NULL;
b = NULL;
return 0;
}
混合c和c++风格的动态二维数组操作
最新推荐文章于 2024-11-17 16:56:14 发布
本文介绍了如何在C++中使用指针进行动态内存的初始化、数据插入以及释放操作,包括`initptr`、`insertdata`和`freeptr`函数的实现和使用。
摘要由CSDN通过智能技术生成