欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c++ 數(shù)組定義及初始化詳解

 更新時間:2020年12月09日 15:43:42   作者:老張哈哈哈  
這篇文章主要介紹了c++ 數(shù)組定義及初始化詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

C ++提供了一種數(shù)據(jù)結(jié)構(gòu),即數(shù)組,該數(shù)組存儲一個固定大小的由相同類型元素構(gòu)成的順序集合。

數(shù)組中的元素存儲在一個連續(xù)內(nèi)存位置中,元素可通過數(shù)組索引訪問, 最低地址對應(yīng)于第一個元素,最高地址對應(yīng)于最后一個元素。

聲明數(shù)組

例如

聲明固定長度的數(shù)組:

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

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

初始化數(shù)組

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

聲明固定長度的數(shù)組同時初始化

const int Size = 5;

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

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

動態(tài)數(shù)組

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

pointer = new type

pointer = new type [number_of_elements]

舉例:

int * foo;

foo = new int [5];

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

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

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

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;

生成一個二維動態(tài)數(shù)組

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

總結(jié):

靜態(tài)數(shù)組和動態(tài)數(shù)組的區(qū)別

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

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

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

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

1、做全局變量

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

2、做局部變量

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

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

int sum[100]={0};//只能設(shè)為0

3、遍歷賦值

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

#include <cstring>//必須引用

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

以上這篇c++ 數(shù)組定義及初始化詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言基于EasyX庫實現(xiàn)有圖形界面鐘表

    C語言基于EasyX庫實現(xiàn)有圖形界面鐘表

    這篇文章主要介紹了C語言基于EasyX庫實現(xiàn)有圖形界面鐘表,直線轉(zhuǎn)動端點計算,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++靜態(tài)成員變量和靜態(tài)成員函數(shù)的使用方法總結(jié)

    C++靜態(tài)成員變量和靜態(tài)成員函數(shù)的使用方法總結(jié)

    下面小編就為大家?guī)硪黄狢++靜態(tài)成員變量和靜態(tài)成員函數(shù)的使用方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 基于C++實現(xiàn)TCP聊天室功能

    基于C++實現(xiàn)TCP聊天室功能

    這篇文章主要為大家詳細介紹了基于C++實現(xiàn)TCP聊天室功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++子類父類成員函數(shù)的覆蓋和隱藏實例詳解

    C++子類父類成員函數(shù)的覆蓋和隱藏實例詳解

    這篇文章主要介紹了C++子類父類成員函數(shù)的覆蓋和隱藏實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C++ 使用PrintWindow實現(xiàn)窗口截圖功能

    C++ 使用PrintWindow實現(xiàn)窗口截圖功能

    這篇文章主要介紹了C++ 如何使用PrintWindow實現(xiàn)窗口截圖功能,文中示例代碼非常詳細,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • C++11 中的std::function和std::bind詳解

    C++11 中的std::function和std::bind詳解

    這篇文章主要介紹了C++ 11 std::function和std::bind,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • C語言超詳細講解雙向帶頭循環(huán)鏈表

    C語言超詳細講解雙向帶頭循環(huán)鏈表

    帶頭雙向循環(huán)鏈表:結(jié)構(gòu)最復(fù)雜,一般用在單獨存儲數(shù)據(jù)。實際中使用的鏈表數(shù)據(jù)結(jié)構(gòu),都是帶頭雙向循環(huán)鏈表。另外這個結(jié)構(gòu)雖然結(jié)構(gòu)復(fù)雜,但是使用代碼實現(xiàn)以后會發(fā)現(xiàn)結(jié)構(gòu)會帶來很多優(yōu)勢,實現(xiàn)反而簡單
    2023-02-02
  • C語言實現(xiàn)常用字符串庫函數(shù)(推薦)

    C語言實現(xiàn)常用字符串庫函數(shù)(推薦)

    這篇文章主要介紹了C語言實現(xiàn)常用字符串庫函數(shù),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • linux之sed命令的用法

    linux之sed命令的用法

    sed是一個很好的文件處理工具,本身是一個管道命令,主要是以行為單位進行處理,可以將數(shù)據(jù)行進行替換、刪除、新增、選取等特定工作,下面先了解一下sed的用法
    2013-10-10
  • Unity3D實現(xiàn)經(jīng)典小游戲Pacman

    Unity3D實現(xiàn)經(jīng)典小游戲Pacman

    這篇文章主要介紹了基于Unity3D制作一做個經(jīng)典小游戲Pacman,文中的示例代碼講解詳細,對我們學(xué)習(xí)Unity3D有一定的幫助,感興趣的小伙伴可以了解一下
    2021-12-12

最新評論