码迷,mamicode.com
首页 > 编程语言 > 详细

分配一维动态数组or 二维动态数组的方法以及学习 new 方法or vector

时间:2017-10-06 20:06:30      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:cto   name   ++   一个   str   学习   end   color   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

标签:cto   name   ++   一个   str   学习   end   color   vector   

原文地址:http://www.cnblogs.com/zhangkele/p/7632041.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!