c++ 之动态数组简单介绍
生活随笔
收集整理的這篇文章主要介紹了
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分配的動態對象,不管是單個分配還是數組中的,都是默認初始化的??梢詫到M中元素進行值初始化,方法是在大小之后跟一對空括號。
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++异常处理(try catch th
- 下一篇: s3c2440移植MQTT