详解二维数组

原创 2018年04月14日 23:32:51

二维数组的使用规则

一:定义
   int arr[3];
   int brr[3][4];

   对比一位数组,二维数组具有行和列两个参数,在定义上,与一维数组相似
  数据类型  数组名[行][列];
二:初始化
  同样,对于一维数组的初始化,如下所示:
  int arr[3] = {1,2,3};
  int arr[3] = {1};//其余默认为0

  那么,二维数组呢?
  二维数组的初始化采用行优先的原则并且,中括号里边只能省略行的值,不能省略列的值。

 三:二维数组的打印
打印二位数组,两层for循环,遍历行和列,然后进行打印
直接在主函数中打印:

利用函数调用,打印:
在利用函数调用打印二维数组时,一般我们的参数列表为
void show(int crr[][4],int row,int col)
在这里要注意,二维数组的数组名不是一个二级指针,因此,不可以将参数列写成
void show(int **crr,int row,int col)//error
那么在调用函数中,一维数组的形参列表可以写成(int *arr)指针类型,

那么二位数组呢,接下来我们对比分析一下两者的异同:

一维数组,它的定义为:int arr[4];并且我们可以确定的是:

先来看一维数组,一维数组中的数组名
arr的数据类型为int *
arr+1为int *
arr[0]为int 

在二维数组中,int brr[3][4];它的数组名以及以下的数据类型分别为:
brr:         int(*p)[4]
brr+1:     int(*p)[4]
brr[0]:      int *
brr[0]+1:  int *
brr[0][0]:  int

也就是说,我们可以将一个二维数组看成是一个一维数组,一行为一个单元格,遵循行优先的原则。
即brr[0][4]和arr[4]相比较,arr == brr[0],同为一维数组名。
在此,我们区别以下数组指针和指针数组的含义:
int (*p)[4];//数组指针:即指向数组的指针
int *p[4];//指针数组:即保存指针的数组

因此,利用调用函数时,我们可以将形参列表写成如下:

对了,在说一个关于二维数组越界的问题,由于我们可以将一个二维数组看成一个一维数组,当二维数组月结某一行时,自动跳转到下一行的起始位置。如下例所示,越界的位置和下一行的起始位置值一致。


最后附上判断复杂数据类型的方法:
(一):看符号的优先级
(二):[]数组       关注数组的格子数和数据类型
              *指针      关注指针的指向内容
      ()函数     关注函数的参数列表和返回值

二维数组解析

   当我们写下int a[3][4]; 的时候,我不知道有多少学C语言的具体明白这个数组背后隐藏的东西。   a代表什么,&a代表什么,a[0]代表什么等等。   我们暂且放弃我们脑海中C语言老师传...
  • wanwenweifly4
  • wanwenweifly4
  • 2011-06-25 21:37:00
  • 1278

【C语言疯狂讲义】(十二)C语言二维数组

二维i数组     1、概念:     一维数组      相同数据类型的(有序)的数据集合。     二维数组      一维数组的每一个元素又是一个一维数组(嵌套)二维数组   ...
  • liwei3gjob
  • liwei3gjob
  • 2014-11-18 21:08:38
  • 1718

关于一维数组和二维数组的基本解析

I一、一维数组的定义 要使用数组,必须在程序中先定义数组,即通知计算机;由哪些数据组成数组,数组中有多少元素,属于哪个数据类型。 定义数组的一般形式: 类型符 数组名 [常量表达式] (1)数...
  • Mr_Dictator
  • Mr_Dictator
  • 2017-07-28 16:04:14
  • 156

《java入门第一季》二维数组三个案例详解

案例一:遍历二维数组  /* 需求:二维数组遍历 外循环控制的是二维数组的长度,其实就是一维数组的个数行数。 内循环控制的是一维数组的长度,每一行,一维数组元素分别的个数。 */ clas...
  • qq_32059827
  • qq_32059827
  • 2016-05-03 19:06:29
  • 1016

静态数组与动态数组的区别以及二维数组地址详解

静态数组: 在编译期间就分配好
  • iamgaowei
  • iamgaowei
  • 2014-04-16 11:08:58
  • 3038

Java二维数组冒泡排序

以前都是将二维转换成一维数组排序,今天老师要求不转换试了一下,仔细分析了一下冒泡,写了这个大家可以试试其他的排序方法,应该都可以用 import java.util.Arrays; class Te...
  • qq_24235325
  • qq_24235325
  • 2016-08-09 14:08:55
  • 897

Java:二维数组(上)

package com.imooc; public class arrayDemo2 { public static void main(String[] args){ //二维数...
  • Zzwtyds
  • Zzwtyds
  • 2017-09-30 12:32:33
  • 238

CStringArray二维数组

  • 2010年11月19日 02:58
  • 2KB
  • 下载

java二维数组详解

1、 声明数组并分配空间 或者 如: 2、 赋值 二维数组的赋值,和一维数组类似,可以通过下标来逐个赋值,注意索引从 0 开始 也可以在声...
  • qq_26676207
  • qq_26676207
  • 2016-03-05 22:01:39
  • 659

Objective-C 二维数组详解

在实际的项目开发中,二维数组也是常常用到的数据结构。OC中的二维数组也是通过一维数组来建立的,今天我们来详解一下如何在OC中使用二维数组。 【使用NSArray初始化二维数组】 使用NSArray初始...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2015-11-02 09:50:26
  • 8589
收藏助手
不良信息举报
您举报文章:详解二维数组
举报原因:
原因补充:

(最多只允许输入30个字)