分配一维动态数组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的主要内容,如果未能解决你的问题,请参考以下文章

java数组(一维数组,二维数组)

二维数组的动态分配(new)初始化(memset)和撤销(delete)

C/C++动态内存 or 柔性数组——对动态内存分配以及柔性数组的概念进行详细解读(张三 or 李四)

js如何定义二维数组,一维的key为动态值。就是要处理二级菜单显示。

C语言中怎样定义动态一维数组

动态创建二维数组使用多少大小