亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用c++ 怎么對一個數組進行初始化

發布時間:2020-12-10 15:43:40 來源:億速云 閱讀:523 作者:Leah 欄目:開發技術

本篇文章給大家分享的是有關利用c++ 怎么對一個數組進行初始化,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

C ++提供了一種數據結構,即數組,該數組存儲一個固定大小的由相同類型元素構成的順序集合。

數組中的元素存儲在一個連續內存位置中,元素可通過數組索引訪問, 最低地址對應于第一個元素,最高地址對應于最后一個元素。

聲明數組

例如

聲明固定長度的數組:

const int Size = 5;
int arr[Size] = {3, 6, 9, 12, 15};
arr[3] = 42;

注意:方括號[]中的內容(表示數組中元素的數量)必須是一個常量表達式,因為數組是靜態內存塊,必須在編譯時確定大小,然后程序才能運行。

初始化數組

int arr[] = { 10, 20, 30, 40 }

聲明固定長度的數組同時初始化

const int Size = 5;

int arr[Size] = { 10, 20, 30, 40 }

上述聲明方式用來定義一個靜態數組,靜態數組所需內存大小要在編譯時就確定下來,數組被分配在棧上. 但是在某些情況下,只能在運行時確定程序的內存需求。 例如,何時需要存儲空間取決于用戶輸入。 在這些情況下,程序需要動態分配內存,為此C ++語言將操作符new和delete集成在一起。

動態數組

使用操作符new分配動態內存。 new之后是數據類型說明符,如果需要一個以上的元素序列,則在括號[]中包含這些元素的數量。 它返回一個指向分配的新內存塊開頭的指針。 其語法為:

pointer = new type

pointer = new type [number_of_elements]

舉例:

int * foo;

foo = new int [5];

在這種情況下,系統會為int類型的五個元素動態分配空間,并返回一個指向序列第一個元素的指針,該指針被分配給foo(一個指針)。 因此,foo現在指向一個有五個int類型的元素的有效內存塊。

利用c++ 怎么對一個數組進行初始化

在這里,foo是一個指針,因此,可以使用表達式foo [0]或表達式* foo(兩者都是等效的)訪問foo指向的第一個元素。 可以使用foo [1]或*(foo + 1)來訪問第二個元素,依此類推...

靜態數組和動態數組最重要的區別是,靜態數組的大小必須是一個常量表達式,因此必須在設計程序時確定其大小,然后再運行它,而由new執行的動態內存分配則可以 在運行時使用任何變量值作為大小分配內存。因為foo是指向動態數據的指針,因此可以刪除此數據,并可以將新數據分配給該指針。

int* foo = new int[5]; // arr now points to a dynamic array of size 5
delete[] foo;
foo = new int[10]; // arr now points to a dynamic array of size 10
delete[] foo;
foo = new int(5); // arr now points to a single int, of value 5.
delete foo;

生成一個二維動態數組

int** a = new int*[rowCount];
for(int i = 0; i < rowCount; ++i)
  a[i] = new int[colCount];

總結:

靜態數組和動態數組的區別

1、靜態數組的大小是在編譯期間就確定,并且分配的,其內存在使用結束后由計算機自動釋放,效率高;動態數組是在程序運行時,由程序員根據實際需要從堆內存中動態申請的,使用結束后由程序員進行釋放,效率低。

2、對靜態數組進行sizeof運算時,結果是整個數組的大小,而對動態數組進行sizeof運算時,因為地址位數為4字節,所以結果為常數4.

3、從尋址的角度來說,靜態數組采用的是直接尋址,而動態數組都是兩次尋址,這和動態數組本身實現是有關系的。靜態數組的變量本身就是數組第一個元素的地址。動態數組的變量存放的是一根指向到申請空間的首址指針。int arr[Size] 中arr本身就是一個內存地址,而int *foo中foo是指針,指向了一個地址。

補充知識:c++、c中數組初始化默認值如何為0

1、做全局變量

int sum[1000006];//初始化設默認值為0

2、做局部變量

默認值只能設為0,且只有在初始化時,才能設為0(sum[100]={0};這么寫就是錯的);

如果設為1,則只是sum[0]是1,其他默認全為0;

int sum[100]={0};//只能設為0

3、遍歷賦值

實際意思和循環賦值0,是一樣的,只不過這個是庫封裝好了的方法。

#include <cstring>//必須引用

memset(sum,0,sizeof(sum));

以上就是利用c++ 怎么對一個數組進行初始化,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

濮阳市| 都昌县| 获嘉县| 手机| 教育| 郁南县| 宁安市| 布尔津县| 老河口市| 湟源县| 云霄县| 米脂县| 普陀区| 兴安县| 普定县| 海淀区| 四平市| 新野县| 洪江市| 博客| 秦安县| 孟连| 河间市| 大同县| 晋州市| 贡嘎县| 阳谷县| 文成县| 会宁县| 高雄县| 汨罗市| 华安县| 正宁县| 漳平市| 攀枝花市| 临夏县| 无棣县| 金昌市| 湛江市| 麦盖提县| 贵溪市|