【精选】打印二维数组的三种方法 |
您所在的位置:网站首页 › c语言如何打印地址里的数据 › 【精选】打印二维数组的三种方法 |
方法一:常规法 老老实实传二维数组。 void print1(int arr[3][5], int row, int col) { int i = 0; int j = 0; for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { printf("%d ", arr[i][j]); } printf("\n"); } } int main() { int arr[3][5] = { 1,2,3,4,5,6,7,8,9,10 }; print1(arr, 3, 5); return 0; }这段代码块,arr[3][5]里的3可省略,降维后与前一维度无关.但5不能省略,因为降维后的指针类型与元素个数有关,省略后指针会类型不明确. 方法二:传指针法 数组传参都会发生降维,降维成指向其内部元素的指针,因为二维数组被看成一个数组元素为一维数组的一维数组。所以在这里,二维数组arr降维成一个指向一维数组的指针,即(*arr)[5],这里与3也就没有任何关系了。 void print2(int (*arr)[5], int row, int col) { int i = 0; int j = 0; for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { printf("%d ", arr[i][j]); } printf("\n"); } } int main() { int arr[3][5] = { 1,2,3,4,5,6,7,8,9,10 }; print2(arr, 3, 5); return 0; }方法三:一维数组打印法 在我所总结的关于规律里,认为所有的不管几维数组,都可以被看为一维数组。所以二维数组就是一维数组,只不过里面的元素为一维数组。所以我想要通过一维数组来打印二维数组。这里假设打印一个3行3列的数组。arr[3][3]. 我们通过画图来找灵感:二维数组的下标我们很容易得到,现在问题是怎么得到这个一维数组的下标?我们先把我们需要的新下标列出来,然后再来寻找i,j和新下标之间的关系,通过观察我们能得到:新下标=i*row+j 那么代码如下: void print3(int *arr, int row, int col) { int i = 0; int j = 0; for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { printf("%d ", arr[i*col+j]); } printf("\n"); } } int main() { int arr[3][3] = { 1,2,3,4,5,6,7,8,9}; print3(arr, 3, 3); return 0; } |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |