#include <iostream>
using namespace std;
/* 二级指针方式开辟和释放内存 */
void twolevel_pointer(int m,int n)
{
/* 开辟内存 */
int **p=new int*[m];
for(int i=0;i<m;i++)
p[i]=new int[n];
/* 赋值并输出 */
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
p[i][j]=(i+1)*(j+1);
cout<<p[i][j]<<"\t";
}
cout<<endl;
}
/* 释放 */
for(int i=0;i<m;i++)
delete[] p[i];
delete[] p;
}
/* 数组指针方式开辟和释放内存 */
void array_pointer(int m,int n)
{
int (*p)[m] =(int(*)[m]) new int[m*n];
/* 赋值并输出 */
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
p[i][j]=(i+1)*(j+1);
cout<<p[i][j]<<"\t";
}
cout<<endl;
}
/* 释放 */
delete[] p;
}
/* 一维数组模仿二维数组方式开辟和释放内存 */
void linear_array(int m,int n)
{
int num=0;
int *p=new int[m*n];
/* 赋值并输出 */
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
p[i]=num++;
cout<<p[i]<<"\t";
}
cout<<endl;
}
/* 释放 */
delete[] p;
}
void menu(int m,int n)
{
int i;
cout<<"二维数组:"<<endl;
cout<<"1、二级指针方式开辟和释放内存"<<endl;
cout<<"2、数组指针方式开辟和释放内存"<<endl;
cout<<"3、一维数组模仿二维数组方式开辟和释放内存"<<endl;
cout<<"请输入操作:"<<endl;
cin>>i;
switch(i)
{
case 1: twolevel_pointer(m,n); break;
case 2: array_pointer(m,n); break;
case 3: linear_array(m,n); break;
}
}
int main()
{
int m,n;
cout << "请输入行数:" << endl;
cin >> m;
cout << "请输入列数:" << endl;
cin >> n;
menu(m,n);
return 0;
}
new和delete
最新推荐文章于 2024-05-05 22:25:26 发布