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.陣列申請:
表達用於分配型別型別的元素的塊(陣列),其中n是表示這些元素的量的整數值。type* pointer = new type[n];
//...
delete pointer;
example:
在這種情況下,系統為int型別的五個元素動態分配空間,並返回指向序列的第乙個元素的指標,該指標被分配給foo,因此,foo現在指向乙個有效的記憶體塊,其中包含五個int 型別元素的空間。int * foo;
foo = new int [5];
這裡,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 動態陣列實現 陣列型別的變數有三個重要的限制 陣列長度固定不變,在編譯時必須知道其長度,陣列只在定義它的塊語句內存在.實際的程式往往不能忍受這樣的限制 它們需要在執行時 動態地分配陣列.雖然陣列長度是固定的,但動態分配的陣列不必在編譯時知道其長度,可以 通常也是 在執行時才確定陣列長度.與陣列...