關於動態陣列的作用,不言而喻,有了動態陣列,我們將不再擔心因為 陣列大小而帶來的而一些困擾。
關於動態記憶體分配的一些函式函式名函式原型
功能返回值
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 作用同上,但是同時...