【本篇博文为学习过程中做的笔记,方便自己阅读而已,非原创】
1.new运算创建对象
基本语法: 指针变量 = new 类型名 (初始化表);
- new 运算符在堆(内存)中创建一个由类型名指定类型的对象,如果创建成功,返回对象的地址,否则返回NULL;
- 初始表给出被创建对象的初始值;
- 由于返回的是地址,所以要事先定义一个类型相同的指针变量来存储这个地址;
例:
int * ip;
ip = new int(5);
或:int *p = new int(5);
-
创建一维数组
语法格式: 指针变量 = new 类型名[下标表达式];
- 下标表达式可以是变量表达式
- new申请失败时返回NULL,申请动态数组往往需要较大的空间,因此在程序中需要对new的返回值进行判断,看是否申请成功
例:
int *pa;
pa = new int[5];
或:int *pa = new int[5];
-
创建多维数组
语法形式: 指针变量 = new 类型名T[下标表达式1][下标表达式2][...]
- 只有下标表达式1可以是任意正整数的表达式,其他必须为值为正整数的常数表达式;
-
如果申请成功,new 运算返回一个指向新分配内存首地址的指针,它是一个T类型数组的指针而不是T类型指针。数组元素的个数为除最左边一维(最高维)外各维下标表达式的乘积;
例:
int (*pb)[4][5];
pb = new int[3][4][5];
2.delete运算
-
释放指针变量 delete 指针变量名;
-
释放动态数组 delete [ ]指针变量名;
3.实例:
建立m*n的动态二维矩阵:
#include<iostream>
using namespace std;
int mian()
{
int m,n;
int **dm;
cout << "input matrix size m,n:" ;
cin >> m >> n;
dm = new int *[m];
for(int i = 0; i < m; i++)
if((dm[i] = new int [n])==NULL)
exit(0);
for(int i = 0; i< m; i++)
for(int j = 0; j < n; j++)
cin >> dm[i][j];
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
cout << dm[i][j];
cout << endl;
}
for(int i = 0; i < m; i++)
delete []dm[i];
delete dm;
这篇博文介绍了C++中使用new运算符动态分配多维数组的步骤和规则,包括基本语法、一维、多维数组的创建,以及delete运算符的使用来释放内存。通过实例展示了如何创建和释放m*n的动态二维矩阵。

798

被折叠的 条评论
为什么被折叠?



