动态二维数组的创建,先挖个坑。
创建二维动态数组的方法:
假设需要一个 n * n
的二维 int
数组,由于 new
只能创建一维数组,所以先创建一个一维数组,有 n
个 int *
型值。再让这 n
个 int *
指向 n
个 int
一维数组。
如下:
int **p = new int*[n];
for (std::size_t i = 0; i < n; ++i)
p[i] = new int[n];
使用完毕记得回收内存。
完整代码如下:
#include <iostream>
int main() {
// 输入二维数组大小
unsigned n;
std::cout << "Input a integer: ";
std::cin >> n;
// 申请数组空间
int **p = new int*[n];
for (std::size_t i = 0; i < n; ++i)
p[i] = new int[n];
// 输入数组
std::cout << "Input the matrix: \n";
for (std::size_t i = 0; i < n; ++i)
for (std::size_t j = 0; j < n; ++j)
std::cin >> p[i][j];
// 输出转置数组
std::cout << "Transposed: \n";
for (std::size_t i = 0; i < n; ++i) {
for (std::size_t j = 0; j < n; ++j)
std::cout << p[j][i] << " ";
std::cout << std::endl;
}
// 回收动态内存
for (std::size_t i = 0; i < n; ++i)
delete[] p[i];
delete[] p;
system("pause");
return 0;
}