看到題目就會有人想生成任意二維陣列不就是定義乙個二維陣列嗎,你想定義為什麼就是什麼,這不就是任意的二維陣列嗎?但這是你在**中定義了二維陣列,在程式執行以後陣列的空間就不會在變化了,如果想在在程式執行中,想生成乙個其他二維陣列是不可能的事情。
##原理
聽起來好像很難,其實很簡單,因為二維陣列的本質就是一維陣列,根據動態申請空間(calloc)會生成一維陣列,再根據二維陣列的行列下標與一維陣列的下標之間的對應關係,生成乙個二維陣列。其實本質就是一維陣列,:)。
**如下
#include#includetypedef unsigned char boolean;
#define true 1
#define false 0
typedef struct matrixmatrix;
void initmatrix(matrix **matrix, int maxrow, int maxcol);
void destory(matrix **matrix);
boolean getelement(matrix matrix, int row, int col, int *value);
boolean setelement(matrix matrix, int row, int col, int value);
boolean setelement(matrix matrix, int row, int col, int value)
matrix.array[(row-1)*matrix.maxcol + col-1] = value;
return true;}
boolean getelement(matrix matrix, int row, int col, int *value)
*value = matrix.array[(row-1)*matrix.maxcol + col-1];
return true;
}void destory(matrix **matrix)
*matrix = null;
}void initmatrix(matrix **matrix, int maxrow, int maxcol)
tp = (matrix *)calloc(sizeof(matrix), 1);
if(null == tp)
tp->array = (int *)calloc(sizeof(int), maxrow*maxcol);
if(null == tp->array)
tp->maxcol = maxcol;
tp->maxrow = maxrow;
*matrix = tp;
}void main(void)
PHP二維陣列(或任意維陣列)轉換成一維陣列的方法
目錄 假設有下面乙個二維陣列 arr array 0 array id 100,username a1 1 array id 101,username a2 2 array id 102,username a3 3 array id 103,username a4 4 array id 104,us...
二維陣列 二維陣列和指標
include using namespace std int main 如上面這段程式所示,通過取位址符 指標 p 獲得了變數 a 的位址,那麼解引用符 就可以從 p 中得到變數 a 的值。也就是說,p a和 p a是等價的。p 是變數 a 的位址,從 p 中就可以取出 a 的值。反之,能從 p ...
陣列 二維陣列
一組相同型別的資料組合,是一種引用型別。陣列名稱不是固定的,與其存放的資料的型別有關。如 存放int型別的資料,陣列名稱 int 存放字串資料,陣列名稱 string 存放scanner型別的資料,陣列名稱 scanner陣列中的每個資料,都是這個陣列的元素。1 宣告 元素型別 變數名 元素型別 變...