今天有同门问到这个问题,写出来代码,进行记录。
使用new运算符进行动态申请:
#include <iostream>
using namespace std;
void createArray(int size_m, int size_n)
{
float **arr = new float *[size_m];
for (int i = 0; i < size_m; i++)
{
arr[i] =new float[size_n];
for (int j = 0; j <size_n; j++)
{
arr[i][j] = (float)((i + 1) * 10 + j + 1);
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
//释放内存空间
for (int i = 0; i < size_m; i++)
{
delete [] arr[i];
}
delete [] arr;
}
int main()
{
int size_m = 4;//行数
int size_n = 5;//列数
createArray(size_m, size_n);
return 0;
}
运行结果如下:
使用malloc函数进行申请(C语言版本的)
#include <iostream>
using namespace std;
void createArray(int size_m, int size_n)
{
float **arr = (float **)malloc(sizeof(float) * size_m);
for (int i = 0; i < size_m; i++)
{
arr[i] = (float *)malloc(sizeof(float) * size_n);
for (int j = 0; j <size_n; j++)
{
arr[i][j] = (float)((i + 1) * 10 + j + 1);
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
for (int i = 0; i < size_m; i++)
{
free(arr[i]);
}
free(arr);
}
int main()
{
int size_m = 4;
int size_n = 5;
createArray(size_m, size_n);
return 0;
}