分配一维动态数组or 二维动态数组的方法以及学习 new 方法or vector
Posted zhangkele
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分配一维动态数组or 二维动态数组的方法以及学习 new 方法or vector相关的知识,希望对你有一定的参考价值。
先来个开胃菜
1 // 使用new动态分配存储空间 2 3 #include<iostream> 4 using std::cout; 5 6 int main() 7 { 8 // 第1种方式 9 int *a=new int; 10 *a=1; 11 cout<<"使用第一种方式进行动态分配存储空间的结果为:\n" 12 <<"*a= "<<*a<<std::endl; 13 delete a; // 释放动态存储空间 14 // 第2种方式 15 int *b=new int(2); 16 cout<<"使用第一种方式进行动态分配存储空间的结果为:\n" 17 <<"*b= "<<*b<<std::endl; 18 delete b; // 释放动态存储空间 19 // 第3种方式 20 int *c; 21 c=new int(3); 22 cout<<"使用第一种方式进行动态分配存储空间的结果为:\n" 23 <<"*c= "<<*c<<std::endl; 24 delete c; // 释放动态存储空间 25 26 // 动态创建数组 27 float *d=new float [3];//区别 1 new 类型()和 2 new 类型[数量]
//一个是通过构造函数创建一个对象
// 一个是创建动态数组但是没有初始化 如果是内置类型会有默认的构造函数
//大多数需要再次分别构造初始化 28 d[0]=3; 29 d[1]=6; 30 d[2]=8; 31 cout<<"d[0]= "<<d[0]<<std::endl; 32 d=d+1; //数组名和指针之间的根本区别 33 cout<<"d[0]= "<<d[0]<<std::endl; 34 d=d-1; 35 cout<<"d[0]= "<<d[0]<<std::endl; 36 delete [] d; // 释放动态存储空间 37 return 0; 38 }
使用第一种方式进行动态分配存储空间的结果为:
*a= 1
使用第一种方式进行动态分配存储空间的结果为:
*b= 2
使用第一种方式进行动态分配存储空间的结果为:
*c= 3
d[0]= 3
d[0]= 6
d[0]= 3
以上为执行结果 自己想啊!!!!
new一个指针数组
对于类A的指针,可以这样写,不仅仅new,还调用了A的构造函数。
A *P = new A();
但是对于new 一个指针数组,我们可以这么写:
A **P = new A *[10];//这里是创建了10个A类型的指针 返回的是指针的地址
但是我们还没有进行构造呢?//这里不能忘记了构造啊!!!!
for(int i=0; i<10; i++)
{
p[i] = new A();
}
还有一个问题就是释放:
for(int i=0; i<10; i++)
{
delete p[i];//为什么不是delete[]p[i]
}
delete [] p;
—————————————————————————————————————————
以上是关于分配一维动态数组or 二维动态数组的方法以及学习 new 方法or vector的主要内容,如果未能解决你的问题,请参考以下文章
二维数组的动态分配(new)初始化(memset)和撤销(delete)
C/C++动态内存 or 柔性数组——对动态内存分配以及柔性数组的概念进行详细解读(张三 or 李四)