C 總結 C C 中的動態陣列

2021-08-26 18:07:07 字數 2102 閱讀 8181

關於動態陣列的作用,不言而喻,有了動態陣列,我們將不再擔心因為  陣列大小而帶來的而一些困擾。

關於動態記憶體分配的一些函式

函式名函式原型

功能返回值

calloc

void *calloc(unsigned n,unsign size)分配n個資料項的記憶體連續空間, 每個資料項的大小為size

分配記憶體單元的起始位址,如不成功,返回0

free

void *free(void *p);釋放p所指的記憶體區

無mallloc

void *malloc(unsigned size);

分配size位元組的儲存區間

所分配的記憶體起始區起始位址,如記憶體不夠,返回0

realloc

void  *realloc(void *p,unsigned size);將p所指出的已分配記憶體區的大小改為size,size可以比原來分配的空間大或小

返回指向該記憶體區的指標

#include#includeint main()
執行結果如下 :

#include#includeint main() 

for (i = 0; i < n1; i++)

printf("\n");

} for (i = 0; i < n1; i++)

free(*(array2 + i)); //free(array2[i])

free(array2);

return 0;

}

執行結果如下:

這裡主要用到realloc()這個函式。

#include#includeint main() 

printf("\n");

printf("請輸入所要擴充套件的動態陣列的長度:");

scanf("%d", &n2);

p = (int*)realloc(n, (n2) * sizeof(int));//動態擴充陣列

for (i = 0; i < n1; i++)

printf("%d\t", n[i]);

for (i = n1; i < n2; i++)

printf("\n");

free(p);

return 0;

}

執行結果: 

printf("\n請輸入所要縮小的動態陣列的長度:");

scanf("%d", &n2);

p = (int*)realloc(n, (n2) * sizeof(int));

for (i = 0; i < n2; i++)

printf("%d\t", p[i]);

printf("\n");

free(p);

return 0;

}執行結果:

主要是new 和delete,他們代替了傳統的的c語言中的malloc等和free。

當然,c和c++並沒有絕對的界限。

希望大家喜歡。

c c 動態陣列

報錯 variable sized object may not be initialized 使用變數定義長度時,不可在定義時同時進行初始化賦值,需要在之後進行賦值 include include includeint main while scanf d d n,m 0 return 0 那為什...

Delphi中的動態陣列總結

今天做的乙個專案中要使用一大串資料進行處理。如何對這一系列的資料進行儲存成為乙個首要的問題。唉,delphi啊,你何時才能支援泛型啊。在c c 這都不是問題了啊。在delphi裡只有tstringlist這個容器可以使用,但是它是處理字串的。一進一出,需要大量的typecast時間。用鍊錶?不值得。...

c c 動態申請陣列

new和delete運算子用於動態分配和撤銷記憶體的運算子 new用法 1.開闢單變數位址空間 1 new int 開闢乙個存放陣列的儲存空間,返回乙個指向該儲存空間的位址.int a new int 即為將乙個int型別的位址賦值給整型指標a.2 int a new int 5 作用同上,但是同時...