C/C++创建二维数组的三种方法

2025-11-08 22:55:30

有时数据量并不固定,开大数组有时实在浪费内存。由此我们可以开辟一个动态数组,随着数据的大小动态创建。节省大量内存,提高内存利用率。

数组本质上就是一个指针(数组名即指针)。

工具/原料

Visual Stdio

Code::Blackd

Dev-C++

方法/步骤

使用C里面的malloc函数创建

C/C++创建二维数组的三种方法

#include <iostream>

#include <cstdio>

using namespace std;//使用命名空间

int main()

{

int n = NULL;

cin >> n;

int** buffer = (int**)malloc(sizeof(int) * n);//创建二级指针

for (int i = 0; i < n; ++i)

buffer[i] = (int*)malloc(sizeof(int) * n);//创建下一级指针

for (int i = 0; i < n; ++i)//输出数据

for (int j = 0; j < n; ++j)

cin >> buffer[i][j];

for (int i = 0; i < n; ++i)//输出数据检验

for (int j = 0; j < n; ++j)

cout << buffer[i][j];

for (int i = 0; i < n; ++i)

free(buffer[i]);//释放

free(buffer);//释放

return 0;

}

使用C++中的new函数创建

C/C++创建二维数组的三种方法

#include <iostream>

using namespace std;//使用命名空间

int main()

{

int n = NULL;

cin >> n;

int** buffer = new int*[n];//创建一级指针

for (int i = 0; i < n; ++i)

buffer[i] = new int[n];//创建二级指针

//int** tmp = buffer;

for (int i = 0; i < n; ++i)

for (int j = 0; j < n; ++j)

cin >> buffer[i][j];//对创建的二维数组进行赋值操作

for (int i = 0; i < n; ++i)

for (int j = 0; j < n; ++j)

cout << buffer[i][j];//对其输出查看结果

for (int i = 0; i < n; ++i)

delete[]buffer[i];//释放二级指针

delete[]buffer;//释放一级指针

return 0;

}

使用C++中的vector头文件中的vector函数创建

C/C++创建二维数组的三种方法

#include <iostream>

#include <vector>

using namespace std;//使用命名空间

int main()

{

int n = NULL;

cin >> n;

//注意下面这一行:vector <int后两个 "> "之间要有空格!否则会被认为是重载 "> > "。

vector<vector<int> > buffer(n, vector<int>(n));

for (int i = 0; i < n; ++i)

for (int j = 0; j < n; ++j)

cin >> buffer[i][j];

for (int i = 0; i < n; ++i)

for (int j = 0; j < n; ++j)

cout << buffer[i][j];

return 0;

}

注意事项

使用malloc(new)创建的数组记得使用free(delete)释放申请的内存。俗话说有借有还再借不难。

如忘记释放内存会导致程序非常容易出现致命Bug

使用malloc或者new创建数组时,新手往往忘记使用free(delete)释放内存,而老手往往是不知道何时释放内存

个人建议使用第三种方法可以避免上述情况

在程序的最后应该加上 " trtuen 0; "表示程序正常退出。保持这种良好的习惯

核心代码均为图片标红部分

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢