有时数据量并不固定,开大数组有时实在浪费内存。由此我们可以开辟一个动态数组,随着数据的大小动态创建。节省大量内存,提高内存利用率。数组本质上就是一个指针(数组名即指针)。
工具/原料
方法/步骤
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;}
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)释放申请的内存。俗话说有借有还再借不难。
3使用malloc或者new创建数组时,新手往往忘记使用free(delete)释放内存,而老手往往是不知道何时释放内存
5在程序的最后应该加上 ' trtuen 0; '表示程序正常退出。保持这种良好的习惯