多语言展示
当前在线:287今日阅读:155今日分享:35

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

有时数据量并不固定,开大数组有时实在浪费内存。由此我们可以开辟一个动态数组,随着数据的大小动态创建。节省大量内存,提高内存利用率。数组本质上就是一个指针(数组名即指针)。
工具/原料
1

Visual Stdio

2

Code::Blackd

3

Dev-C++

方法/步骤
1

使用C里面的malloc函数创建

2

#include #include 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;}

3

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

4

#include  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;}

6

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

7

#include #include using namespace std;//使用命名空间int main(){int n = NULL;cin >> n;//注意下面这一行:vector '之间要有空格!否则会被认为是重载 '> > '。vector > buffer(n, vector(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;}END

注意事项
1

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

2

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

3

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

4

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

5

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

6

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

推荐信息