我是靠谱客的博主 繁荣世界,这篇文章主要介绍c++ 之动态数组简单介绍,现在分享给大家,希望可以做个参考。

 一、简单介绍

#include <iostream>
#include <memory>
using namespace std;
int main()
{
//typedef定一个数组的类型
typedef int ptr[109];
//定义一个数组类型的对象

int *p = new ptr;
for(int i = 0; i!= 109; ++i)
    p[i] = i;
for(int i = 0; i!= 109;++i)
        cout << p[i] << endl;
int n;
cin >> n;

//定义一个数组类型的对象,new + 类型+ [],后面()表示数组的每个元素执行值初始化
int *p1 = new int[n]();
for(int i = 0;i != n;++i)
        p1[i] = i;
for(int i = 0; i!=n;++i)
cout << p1[i] << endl;

   return 0;
}                                                                            

二、分配一个数组会得到一个指向数组第一个元素的指针。

       由于分配内存返回的不是一个数组类型,因此不能对动态数组调用begin或者end。这些函数的使用维度来返回指向首元素和尾后元素的指针。处于相同的原因,也不能使用范围for语句来处理动态数组中的元素。

 三、初始化动态分配对象的数组。

默认情况下,new分配的动态对象,不管是单个分配还是数组中的,都是默认初始化的。可以对数组中元素进行值初始化,方法是在大小之后跟一对空括号。

string *p4 = new string[19]();
//打印元素,发现都是空string
for(auto p = p4;p != p4+19;++p)
        cout << *p << endl;

在新标准中,我们还可以提供一个元素初始化器的花括号列表:

int *p5 = new int[20]{1,2,3,4,5,6};
for(int *q = p5;q != p5 + 20;++ q)
        cout << *q <<endl;
1
2
3
4
5
6
0
0
0
0
0
0
0
0
0
0
0
0
0
0
int n  = get_size();
int *p = new  int[n];
for(int q = p;q != p +n; ++q)

下面的语句是合法的。但是定义数组(非动态数组)是非法的。 

char arr[0];   //数组不能维度是0
char *cp = new char[0];  //合法的,但cp不能解引用,相当于一个尾后指针。

三、释放动态数组

为了释放动态数组,我们使用一种特殊的形式的delete------在指针前加上一个方括号对:

delete p;       //p必须是一个空的方括号对
delete [] p;    //p是一个动态数组

如下:

typedef int arrT[42];
int *p = new arrT;
delete [] p;

 

最后

以上就是繁荣世界最近收集整理的关于c++ 之动态数组简单介绍的全部内容,更多相关c++内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(110)

评论列表共有 0 条评论

立即
投稿
返回
顶部