C++ Primer筆記(6)

來源:互聯網
上載者:User

與vector類型相比,數組的顯著缺陷在於:數組的長度是固定的,而且程式員無法知道一個給定數組的長度。數組沒有擷取其容量大小的size操作,也不提供push_back操作的其中自動添加元素。如果需要更改數組的長度,程式員只能建立一個更大的新數組,然後把原數組的所有元素複製到新數組空間中去。


現在C++程式更多地使用vector來取代數組,只有當效能測試表明使用vector無法達到必要的速度要求時,才使用數組。

數組是由類型名、標識符和維數組成的複合資料型別,類型名規定了存放在數組中的元素的類型,而維數則指定數組中包含的元素個數。


指標----用於指向對象。
建議:盡量避免使用指標和數組。
避免使用未初始化的指標。
如果可能的話,除非所指向的對象已經存在,否則不要先定義指標,這樣可避免定義一個未初始化的指標。

如果必須分開定義指標和其所指向的對象,則將指標初始化為0,。因為編譯器可檢測出0值的指標,程式可判斷該指標並未指向一個對象。


void*指標:
它可以儲存任何類型對象的地址。只支援幾種有限的操作:與另一個指標進行比較;向函數傳遞void*指標或從函數返回void*指標;給另一個void*指標賦值。

指標的算術操作:指標加上(或減去)一個整形數值n等效與獲得一個新指標,該新指標指向指標原來指向的元素之後(或之前)的第n個元素。


數群組類型的變數有三個重要的限制:數組長度固定不變,在編譯時間必須知道其長度,數組只在定義它的塊語句中存在。
動態分配的數組將一直存在,直到程式動態釋放它為止。

每一個程式在執行時都佔用一塊可用的記憶體空間,用於存放動態分配的對象,此記憶體空間稱為程式的自由儲存區或堆。C語言一般用malloc和free,C++一般用new和delete。


int *p=new int[10]();//數組會初始化為0
int *p=new int[10];//數組不會進行初始化
delete [] p;//釋放
string st3("Hello World");

char *str=st3.c_str();//返回c風格字串的表示方法。


使用數組初始化vector
const size_t arr_size=6;
int int_arr[arr_size]={0,1,2,3,4,5};
vector<int> ivec(int_arr,int_arr+arr_size);

vector<int> ivec(int_arr+1,int_arr+4);//int_arr[1],int_arr[2],int_arr[3]


C++沒有多維陣列,通常所指的多維陣列其實就是數組的數組。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.