.使用malloc开辟一个3*4的二维数组,并将内容初始化为0-11

来源:互联网 发布:易语言3D彩票源码 编辑:程序博客网 时间:2024/05/06 16:56

方法一·:

很容易联想到使用指针数组

<pre name="code" class="cpp">#define ROW  3#define COL 4void Test4(){int(*p)[COL] = (int(*)[COL])malloc(sizeof(int)*ROW*COL); //注意是int(*p)[COL],<span style="color:#ff0000;">是COL不是ROW</span>for (int i = 0; i < ROW; ++i){for (int j = 0; j < COL; ++j){p[i][j] = i*COL + j;}}for (int i = 0; i < ROW; ++i){for (int j = 0; j < COL; ++j){printf("%d ", p[i][j]);}}}


方法二:

使用二级指针,就像虚表指针与虚表一样(注意C语言中不能直接返回一个二维数组,也不能是一个数组指针,所以若要动态开辟一个二维数组并返回,那么只能通过这种方式)

void Test(){int **p = (int **)malloc(sizeof(sizeof(int*)*ROW));for (int i = 0; i < ROW; ++i){p[i] = (int *)malloc(sizeof(int)*COL);}for (int i = 0; i < ROW; ++i){for (int j = 0; j < COL; ++j){p[i][j] = i*COL + j;}}for (int i = 0; i < ROW; ++i){for (int j = 0; j < COL; ++j){printf("%d ", p[i][j]);}}}


0 0