08_使用指標建立一維動態陣列@ 藍影

文章推薦指數: 80 %
投票人數:10人

對於之前”指標特輯”的前三篇文,在程式中讓人感覺實用意義 ... 08_使用指標建立一維動態陣列 ... (2.1) C語言使用malloc進行配置,語法為. 藍影 跳到主文 生命就是享受不停學習的過程.. 部落格全站分類:數位生活 相簿 部落格 留言 名片 Sep11Fri200908:47 08_使用指標建立一維動態陣列 對於之前”指標特輯”的前三篇文,在程式中讓人感覺實用意義並不大,接下來要說的全都是重點,如果前三篇文沒有看懂的人,請先回去看懂吧。

1.為什麼要用動態記憶體:一般我們使用陣列時,你不可以隨時改變陣列的大小,陣列的大小在宣告時就已經確定。

所以不可能會有像以下的程式碼出現 intN=10;inta[N];//compliererrorN=20;a[N];//complier 但如果一開始我們就宣告陣列的大小,如果我們沒用那麼多的話就浪費,如果用太多、超過的話又會造成runtimeerror,怎麼辦呢?這就是為什麼要使用動態記憶體的原因了,因為動態配置陣列,可以隨心所欲的控制陣列的元素個數。

這篇暫以指標動態配置一維陣列為例。

2.配置動態記憶體注意事項: 假設我要配置的陣列大小為cnt個 (2.1)C語言使用malloc進行配置,語法為        資料型態*ptr;       ptr=(資料型態*)malloc(sizeof(資料型態)*cnt); 如:       double*ptr;       ptr=(double*)malloc(sizeof(double)*cnt);   C++使用 new進行配置其語法為 資料型態*ptr;      ptr=new資料型態[cnt]; 如:       double*ptr;        ptr=newdouble[cnt];   (2.2)配置完後,和一般陣列的存取方式都一樣,你可以用*(ptr+i);也可以用ptr[i]方式進行存取。

  (2.3)如果你已經用該指標配置了一塊記憶體空間(在這裡指的是陣列),那麼當你還要再進行一次新的配置時,記得把原本的記憶體空間給釋放出去,否則你的程式記憶體會愈吃愈大,最後將因記憶體空間不足而跳出。

C語言使用 free(ptr)進行釋放C++使用delete[]ptr進行釋放 最後,不論如何,只要有配置,就一定要釋放,一個malloc就配一個free,一個new就配一個delete。

3.程式範例-C //====================================//FileName:Ptr1Dim_C.cpp//Author :Edison.Shih.//Complier:VC2008 #include#include //====================================//mainfunctionintmain(intargc,char**argv){       double*ptr=NULL;       intDim=0,i=0;        printf("pleaseinputDim:");       scanf_s("%d",&Dim);              //mallocthememoryaddress       ptr=(double*)malloc(sizeof(double)*Dim);       //setthevalue-method1       for(i=0;iusingnamespacestd;//====================================//mainfunctionintmain(intargc,char**argv){       double*ptr=NULL;       intDim=0,i=0;        cout<>Dim;              //mallocthememoryaddress       ptr=newdouble[Dim];       //setthevalue-method1       for(i=0;i>Dim;       //beforeyoumallocthenewmemoryaddree.       //freetheoldmemoryaddressfirst.       delete[]ptr;              //mallocthememoryaddress       ptr=newdouble[Dim];       //setthevalue-method1       for(i=0;i



請為這篇文章評分?