評鑑名單0 0評鑑名單
(觀光客)
➦電腦教學區
✖隱藏
回應 (4)
通報違規

 殺時間C++程式練習(6):動態記憶體配置

放開那女孩
本文:2012-10-20T08:47:54

動態記憶體配置(Dynamical Memory Allocation)

寫一個計算10筆資料的平均值的程式,會宣告大小為10的陣列:

float data[10];

如果下一次要計算的資料是26筆或100筆,就需要修改程式,將陣列大小改為26或100,再重新編譯、執行,毫無彈性可言。

比較彈性的處理方法是:程式撰寫的時候不設定陣列的大小,執行時才讓使用者輸入動態的方式指定、配置和使用陣列所需的記憶體。

動態記憶體配置會宣告一個指標變數,再藉由C++所提供的動態記憶體配置運算子new來執行動態記憶體配置,

指標變數 = new 指標的變數型別[記憶體大小];

例如:

int *m; //宣告一個指標變數m

m = new int[1000]; //配置1000個整數的記憶空間給指標變數m,m即為一個陣列

一旦不再需要這個動態配置的陣列,我們還可以把記憶體釋放出來,以便讓程式有更大的記憶空間做其他用途。釋放記憶體的方法是使用C++所提供的釋放記憶體運算子,語法很簡單:

delete 指標變數;

例如:

delete m;

delete會把前面m所配置的記憶體釋放出來。m又回復成為原先的指標變數,因此還可以再度配置不同的記憶空間給m,以便因應不同陣列大小的需求。在程式執行過程中,一個指標可以被反覆的配置、釋放動態記憶體任意次。
----------------------------------------------------------------
#include <iostream>

int main(){

int *p; //宣告一個整數的指標p

p = new int[3]; // 配置記憶體給p,使p成為一個整數陣列

if(p==0) //配置記憶體失敗



return;



p[0] = 20;

p[1] = 30;

p[2] = 40;

int i;

for(i=0;i<3;i++)cout << p[i]<<endl;

delete p; // 釋放記憶體




----------------------------------------------------------------
#include <iostream>

int main(){

int *m; //宣告一個整數的指標m

int i,j,num;

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



num=random(80); //亂數產生陣列大小num

m = new int[num]; // 配置記憶體給m

for(j=0;j<num;j++)



m[j]=random(10); //將陣列m任意填入[0,9]的亂數

cout<<m[j]; //輸出



cout<<endl; //換行




----------------------------------------------------------------
寫一個程式,讓使用者輸入一個整數N後,動態配置大小為N的整數陣列data,再由使用者輸入N個陣列值,求其平均值輸出。

提示:

cin>>N;

int *data;

data=new int[N];

cout<<"Enter "<<N<<" values : ";

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



cin>>data[i];




補充 - 2012-10-21T22:29:49

  評鑑名單0 0評鑑名單  回應 (4)
[舊回應在上方][新回應在上方]
放開那女孩
1 F:2012-10-20T08:48:32



(觀光客) 有感四聲感 - 36.225.97.110
2 F:2012-10-23T10:05:54

先推再看(不是推倒才看)

(觀光客) 543 - 125.224.23.136
3 F:2012-10-24T22:01:45

333333333q

(觀光客) 543 - 36.232.101.243
4 F:2012-12-02T09:32:16

3333q

[0.09] Archiver