/**
*cppTest-3.0:指針相關-3(二維數組的n種new方式)
*
*轉載+原創
*author 煒sama
*/
#include<iostream.h>
void main()
{
typedef int A;
const int m=2,n=2;//記住:定義數組時數組長度一定要用常量!!!
//1、new二維數組方式
//缺點:n必須是已知
//優點:調用直觀,連續儲存,程序簡潔(經過測試,析構函數能正確調用)
A (*ga)[n] = new A[m][n];//一次性就new了m*n內存,比方式2簡單得多!
ga[0][0]=1;
cout<<ga[0][0]<<endl;
delete []ga;
//2、new一維指針數組方式
//缺點:非連續儲存,程序煩瑣
//優點:調用直觀,n可以不是已知
A** ga2 = new A*[m];
A** ga22=new A* [m];//這種方式也可以!
//A** ga22=new *A[m];//這種方式是錯誤的!
for(int i = 0; i < m; i++)
ga2[i] = new A[n]; //還要new出每行的數組
ga2[0][0]=2;
cout<<ga2[0][0]<<endl;
for(int j = 0; j < m; j++)
delete []ga2[j];//釋放每行數組
delete []ga2;//最後還要釋放指針數組......
//3、2的改進
//優點:連續存儲,n可以不是已知,析構方便
A** ga3=new A*[m];
//ga3[0]=new A[m*n];
*ga3=new A[m*n];
//for(int k=1;k<m;k++)
//ga3[k]=ga3[k-1]+n;
ga3[0][0]=3;
cout<<ga3[0][0]<<endl;
delete []*ga3;
//delete []ga3;
//4、將二維數組當成一維數組來new
//缺點:調用不夠直觀
//優點:連續儲存,n可以不是已知
A* ga4 = new A[m*n];
ga4[0]=4;
cout<<ga4[0]<<endl;
delete []ga4;
//5
//6
}
cppTest-3.0:指針相關-3(二維數組的n種new方式)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.