如何實現動態陣列

2021-09-26 22:23:59 字數 1384 閱讀 3475

1.使用指標~~

2.自己申請記憶體

例如:如第一塊的**,若想實現乙個動態陣列,必須寫成二的部分,用完之後必須給free();

必須加上標頭檔案#include

常用格式:

舉個例子:

#includeint main()
#include#includeint main()
1.malloc函式的引數為所需申請記憶體的大小:以位元組為單位。

2.malloc函式返回乙個void*型別的位址,必須通過強制型別轉換,才能賦值給特定的指標變數

int *pint = (int *)malloc(sizeof(int ) *100):

3.分配的記憶體不在使用的時候一定要釋放:

free(pint);

那麼在c++中也有相應的動態陣列的函式定義。

所用到的函式是 new ,delete

所在標頭檔案:iostream

使用格式:

特點:

1.new 是 c++ 關鍵字的一部分;

2. new以具體型別為單位進行記憶體分配;

3. new在申請單個型別變數是時可以進行初始化;而malloc不可以;

語法:1.變數申請:

type * pointer = new type[n];

//....

delete pointer;

表示式用於分配記憶體以包含乙個型別型別的單個元素。

2.陣列申請:

type* pointer = new type[n];

//...

delete pointer;

表達用於分配型別型別的元素的塊(陣列),其中n是表示這些元素的量的整數值。

example:

int * foo;

foo = new int [5];

在這種情況下,系統為int型別的五個元素動態分配空間,並返回指向序列的第乙個元素的指標,該指標被分配給foo,因此,foo現在指向乙個有效的記憶體塊,其中包含五個int 型別元素的空間。

這裡,foo是乙個指標,因此,foo指向的第乙個元素可以用表示式foo[0];或者*foo來訪問。可以用foo[1]或者 *(foo+1)訪問第二個元素,依次類推。

乙個簡單的例子可以幫助大家理解這個,可以自己執行試一試。

#includeusing namespace std;

int main()

delete p;

return 0;

}

實現動態陣列

學過c語言的都知道陣列的長度在定義陣列時時固定的,不能在程式執行時發生變化,那麼動態陣列是否和以上的定義相違背?動態陣列的實現步驟 1.先使用malloc函式申請乙個足夠大的位址空間,並返回乙個指標作為首位址 2.將原有陣列的元素按照順序複製到新的位址中 3.將帶加入的元素加入到新的位址中並且時放在...

動態陣列的實現

靜態陣列 編譯階段確定陣列的大小,執行階段不能改變陣列大小。缺點是事先無法準確確定陣列的大小,太小不滿足處理需要,太大浪費記憶體空間。動態陣列 執行階段,根據實際需要動態確定陣列的大小。在 c 語言中,可利用記憶體的申請和釋放庫函式,c語言培訓班 以及指向陣列的指標變數可當陣列名使用的特點,來實現動...

VC動態陣列實現

vc 動態陣列實現 陣列型別的變數有三個重要的限制 陣列長度固定不變,在編譯時必須知道其長度,陣列只在定義它的塊語句內存在.實際的程式往往不能忍受這樣的限制 它們需要在執行時 動態地分配陣列.雖然陣列長度是固定的,但動態分配的陣列不必在編譯時知道其長度,可以 通常也是 在執行時才確定陣列長度.與陣列...