生成任意二維陣列

2021-08-16 00:22:28 字數 1365 閱讀 3021

看到題目就會有人想生成任意二維陣列不就是定義乙個二維陣列嗎,你想定義為什麼就是什麼,這不就是任意的二維陣列嗎?但這是你在**中定義了二維陣列,在程式執行以後陣列的空間就不會在變化了,如果想在在程式執行中,想生成乙個其他二維陣列是不可能的事情。

##原理

聽起來好像很難,其實很簡單,因為二維陣列的本質就是一維陣列,根據動態申請空間(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 宣告 元素型別 變數名 元素型別 變...