純C/C++ 動態配置二維數字陣列(001_C++基本觀念\91_純C和t純C++的二維指標與陣列- 動態配置[m][n] 陣列 文件)

純C/C++ 動態配置二維數字陣列(001_C++基本觀念\91_純C和t純C++的二維指標與陣列- 動態配置[m][n] 陣列 文件)

純C/C++ 動態配置二維數字陣列(001_C++基本觀念\91_純C和t純C++的二維指標與陣列- 動態配置[m][n] 陣列 文件)

 

純c

 

// ====================================
// FileName: Ptr2Dim_C.cpp
// Author  : Edison.Shih.
// Complier: VC 2008
#include <stdio.h>
#include <stdlib.h>
#define ROW               2
#define COL                4
// ==================================== 
// main function
int main(int argc, char**argv)
{
int i=0, j=0;
int **ptr2 = NULL;
// 生成一維指標陣列
ptr2 = (int**)malloc(sizeof(int*)*ROW);
// 每個指標陣列再生成整數陣列
for(i=0; i<ROW; i++) ptr2[i] = (int*)malloc(sizeof(int)*COL);
// write
int cnt = 0;
for(i=0; i<ROW; i++) {
for(j=0; j<COL; j++) ptr2[i][j] = cnt++;
}
// read value and address
for(i=0; i<ROW; i++) {
for(j=0; j<COL; j++) printf("ptr2[%d][%d]=%d(%0X)\n", i, j, ptr2[i][j], &ptr2[i][j]);
}
// 釋放指標陣列
for(i=0; i<ROW; i++) free(ptr2[i]);
// 釋放指標
free(ptr2);
return 0;
}

 

純c++

 

// ====================================
// FileName: Ptr2Dim_Plus.cpp
// Author  : Edison.Shih.
// Complier: VC 2008
#include <iostream>
using namespace std;
#define ROW                2
#define COL                4
// ==================================== 
// main function
int main(int argc, char**argv)
{
int i=0, j=0;
int **ptr2 = NULL;
// 生成一維指標陣列
ptr2 = new int*[ROW];
// 每個指標陣列再生成整數陣列
for(i=0; i<ROW; i++) ptr2[i] = new int[COL];
// write
int cnt = 0;
for(i=0; i<ROW; i++) {
for(j=0; j<COL; j++) ptr2[i][j] = cnt++;
}
// read value and address
for(i=0; i<ROW; i++) {
for(j=0; j<COL; j++) {
cout << "ptr2[" << i << "][" << j<< "]=" << ptr2[i][j];
cout << "(" << hex << &ptr2[i][j] << ")" << endl;
}
}
// 釋放指標陣列
for(i=0; i<ROW; i++) delete ptr2[i];
// 釋放指標
delete ptr2;
// 事實上, 上面那二行用 delete [] ptr2; 就行了
return 0;
}

 

 
 

 




發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *