二维数组的遍历

方法1:

 1 /*************************************************************************
 2     > File Name: ptrmulti.c
 3     > Author: Mr.Yang
 4     > Purpose:使用指针来将数组传递给函数
 5     > Created Time: 2017年06月04日 星期日 08时51分15秒
 6  ************************************************************************/
 7
 8 #include <stdio.h>
 9 #include <stdlib.h>
10
11 /*遍历函数的原型,函数的参数是数组指针*/
12 void printarray_1(int (*ptr)[4]);
13
14 int main(void)
15 {
16         /*声明一个三行四列的数组*/
17         int multi[3][4] =
18         {
19                 {1,2,3,4},
20                 {5,6,7,8},
21                 {9,10,11,12}
22         };
23
24         /*声明一个数组指针,可以指向4个int型的数组变量*/
25         int (*ptr)[4];
26
27         /*把ptr初始化指向multi*/
28         ptr = multi;
29
30         /*调用函数*/
31         /*记住这个地方刚开始编写代码的时候没有进行for循环操作,会打印不完整*/
32         int i = 0;
33         for(;i<3;i++)
34         {
35                 printarray_1(ptr++);//通过for循环可以遍历multi0到multi2
36         }
37
38         return 0;
39 }
40
41 void printarray_1(int (*ptr)[4])
42 {
43         int *p;
44         int count = 0;
45         p = (int *)ptr;//怎么理解类型的强制转换?
46
47         for(;count < 4;count++)
48         {
49                 printf("%d\n",*p++);//通过类型强制转换后进行三行四列数组的横向打印
50         }
51 }

方法2:

 1 /*************************************************************************
 2     > File Name: ptrmulti1.c
 3     > Author: Mr.Yang
 4     > Purpose:二维数组的遍历方法2
 5     > Created Time: 2017年06月04日 星期日 09时40分36秒
 6  ************************************************************************/
 7
 8 #include <stdio.h>
 9 #include <stdlib.h>
10
11 /*遍历函数的原型*/
12 void printarray_2(int (*ptr)[4],int n);
13
14 int main(void)
15 {
16         /*声明一个三行四列的数组*/
17         int multi[3][4] =
18         {
19                 {1,2,3,4},
20                 {5,6,7,8},
21                 {9,10,11,12}
22         };
23
24         /*声明一个数组指针*/
25         int (*ptr)[4];
26
27         /*对数组指针进行初始化,此处ptr指向了multi[0],并且可以存储4个int型数组元素*/
28         ptr = multi;
29
30         /*调用函数进行遍历操作,这个地方如果传参数后,就不用使用for循环,因为当获得第一个multi[0][0]后,进行顺序遍历即可得到所有值*/
31         printarray_2(ptr,3);
32
33
34         return 0;
35 }
36
37 /*遍历函数*/
38 void printarray_2(int (*ptr)[4],int n)
39 {
40         int *p;
41         int count = 0;
42         p = (int *)ptr;
43         for(;count<4*n;count++)
44         {
45                 printf("%d\n",*p++);
46         }
47 }
时间: 2024-11-03 21:44:10

二维数组的遍历的相关文章

23:二维数组回形遍历

23:二维数组回形遍历 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按回形从外向内顺时针顺序遍历整个数组.如图所示: 输入 输入的第一行上有两个整数,依次为row和col.余下有row行,每行包含col个整数,构成一个二维整数数组.(注:输入的row和col保证0 < row < 100, 0 < col < 100) 输出 按遍历顺序输出每个整数.每个

二维数组的遍历之查漏补缺

//二维数组的遍历public class Test10 { public static void main(String[] args) { int arr[][]={{1,2,3},{4,5},{6,7,8,9}}; for(int x=0;x<arr.length;x++){ for(int y=0;y<arr[x].length;y++){ System.out.print(arr[x][y]+"\t"); } System.out.println(); } }}

对二维数组的遍历求和

二维数组的遍历,求和 int [] [] s = {{1,2,3,4},{5,6,7,8,3,3},{9,10,11,12}}; int sum=0; for (int i = 0; i < s.length; i++) { for (int j = 0; j < s[i].length; j++) { sum+=s[i][j]; } } System.out.println(sum); Console:84; 原文地址:https://www.cnblogs.com/fengxia/p/10

Undefined offset原因以及解决办法-php利用for遍历二维数组方法-二维数组怎么遍历

<?php $arr3 = [ [1,2,3], [4,5,6,7], [8,9,10,11,12], ]; $len = count($arr3); $num2 = 0; $zong = 0; for($i = 0; $i < $len; $i++) { $tem = $arr3[$i]; $len2 = count($tem); for($j = 0; $j < $len2; $j++) { $num2 += $tem[$j]; $zong++; } } echo "<

二维数组的遍历和dom循环创建

发的第一篇博客,新手一枚,有错误的,勿喷. 最近在写关于购物车的本地存储的前端技术,这里是关于如何把一个二维数组内部的信息呈现在页面上. 一般来说本地存储时,存储的是关于店铺的信息和店铺内部商品的信息.本地存储时把数组转换成Json串存储的.这里为了方便是直接创建的一个二维数组 var product = [{shopId:100,shopNm:'红石榴',productList:[{goodsId:1,goodsNm:"苹果7",goodsNum:"1"}]},{

Openjudge-NOI题库-二维数组回形遍历

题目描述 Description 给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按回形从外向内顺时针顺序遍历整个数组.如图所示: 输入输出格式 Input/output 输入格式:输入的第一行上有两个整数,依次为row和col.余下有row行,每行包含col个整数,构成一个二维整数数组.(注:输入的row和col保证0 < row < 100, 0 < col < 100)输出格式:按遍历顺序输出每个整数.每个整数占一行. 输入输出样例 Sam

二维数组回形遍历

http://noi.openjudge.cn/ch0108/23/ 总时间限制:  1000ms 内存限制:  65536kB 描述 给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按回形从外向内顺时针顺序遍历整个数组.如图所示: 输入输入的第一行上有两个整数,依次为row和col.余下有row行,每行包含col个整数,构成一个二维整数数组.(注:输入的row和col保证0 < row < 100, 0 < col < 100)输出按遍历顺序输

二维数组的初始化,遍历

1 package com.baidu.java; 2 //2维数组的初始化 3 public class Array2 { 4 public static void main(String[] args) { 5 //1.静态初始化 6 int[][] aa=new int[][]{{3,4,5},{6,7,8,9},{1,2}}; 7 //2.1动态初始化 8 String[][] bb=new String[6][5];//想成6个小组,每个小组5个人 9 //2.2动态初始化 10 St

汇编学习:二维数组遍历

作为正式接触汇编的开篇,本文将研究二维数组的遍历问题.在图像处理中,通常需要遍历图像像素(即二维数组).下面给出三个版本的遍历函数,并研究他们的汇编代码(VC2010编译器,x86版,Release模式). (1)在两层循环内每次根据行列索引计算元素位置. (2)为了避免在内存循环内的乘法计算,可在每次外层循环中计算好行起始地址,内层循环每次执行++操作. (3)将外层循环的乘法操作也去掉,在循环外部先计算好数组的起始地址,内层循环每次执行++操作即可. 测试程序实现对图像的反相操作(即B=25