2014年10月27日 星期一

純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;
}

 


 










 

 






沒有留言:

張貼留言