二维数组

还是一个数组,只不过数组中得每一个元素又是一个数组

1). 声明语法

类型 数组名[行][列];

  例:  int nums[2][3];//2行3列的二维数组,保存的数据类型是int类型

char chs[3][5];//3行5列的二维数组,保存的数据类型是char类型

2). 初始化

A.在声明的时候初始化

  a.

    int nums[3][5] = { {10,32,34,43,45}, {5,45,23,45,34}, {19,2,34,23,35}}

  b.

int nums[2][3] = { 1,2,3,4,5,6};

  c.

省略行数(较少使用)

int nums[][3] = { {1,2,3} ,{4,5,6} };//编译器自动根据右边的数组来判断有多少行,这个判断出来是2行

int nums[][3] = { 1,2,3,4,5,6 };//这个有2行

int nuns[][2] = { 1,2,3,4,5};//这个有3行,只不过第三行的最后一个元素是0,第三行的第一个元素是5

tips:C语言中二维数组无论如何定义的时候都不可以少了列

3). 取值语法

数组名[行][列];

例: nums[1][3];//取第二行(下标为1的行)的第四列(下标为3的列)的数据;

4). 遍历二维数组

  A.普通数组

for(int i=0;i<长度;i++){

    }

B.二维数组

for(int i=0;i<行;i++){

for(int j=0;j<列;j++){

数组名[i][j];

    }

  }

5).二维数组的一些其他应用

  A 二维数组的某行某列的元素作为函数的参数

是值传递:形参的值发生改变,不会影响到实参

  B 二维数组作为函数的参数

引用传递:形参的值发生改变,会影响实参

  C 二维数组占用的总字节数计算方法:

sizeof(二维数组名);

  D 二维数组行数的计算公式:

二维数组占用的总字节数 / 二维数组中某一行的字节数 = 行数

行数 = sizeof(二维数组名) / sizeof(二维数组名[0]);

  E 二维数组列数的计算公式:

二维数组某行占用的字节数 / 二维数组中某个小空间占用的字节数 =列数

列数 = sizeof(二维数组名[0]) / sizeof(类型);

6).二维数组和N维数组

二维数组应用范围比较少,但是一般是用来绘制平面的

    具体应用:

画地图

  二维数组: 数组中得每个元素又是一个数组

  三维数组: 数组中得每个元素又是一个二维数组

int nums[3][2][3]; //三维数组

  四维数组: 数组中得每个元素又是一个三维数组

int nums[4][4][2][3];

  五维数组: 数组中得每个元素又是一个四维数组

  ……….

  N维数组: 数组中得每个每个元素又是一个N-1维数组

C语言之二维数组的更多相关文章

  1. C语言 字符二维数组(多个字符串)探讨 求解

    什么是二维字符数组? 二维字符数组中为什么定义字符串是一行一个? “hello world”在C语言中代表什么? 为什么只能在定义时才能写成char   a[10]="jvssj" ...

  2. C语言中将二维数组作为函数参数来传递

    c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include <stdio.h> void func(int n, char ...

  3. C语言回顾-二维数组

    1.二维数组:是一个特殊的一维数组 完全初始化: 1)int a[2][3]={{1,2,3},{2,3,4}}; 2)连续赋值int a[2][3]={1,2,3,2,3,4}; 3)可以省略第一维 ...

  4. C语言教学--二维数组和指针的理解

    对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻. 我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, ...

  5. C语言基础--二维数组

    二维数组概念: 数组中的每一个元素又是一个数组, 那么这个数组就称之为二维数组,二维数组是特殊的一维数组. 二维数组格式: 元素类型 数组名称[一维数组的个数][每个一维数组的元素个数]; 元素类型 ...

  6. 【C语言】二维数组做形参

    二维数组有两种形式: ①在栈上:         int a[4][4] = {...}; ②在堆堆上:          int ** a = new int *[4];           for ...

  7. 【学习笔记】【C语言】二维数组

    1. 什么是二维数组 一个数组能表示一个班人的年龄,如果想表示很多班呢? 什么是二维数组?int ages[3][10]; 三个班,每个班10个人 相当于3行10列 相当于装着3个一维数组 二维数组是 ...

  8. iOS,object-c传参c语言的二维数组

    有那么一瞬间,懒得用NSArray,NSNumber,NSValue等一大堆蛋疼的转换,所以就定义了一个C的二维数组,反正OC支持C混编,可是蛋疼往往是传递的,这里不疼了,哪里就要疼,想把一个c的二维 ...

  9. C语言 memcpy二维数组的复制

    今天在实现二维数组的复制功能时,竟然出现了好多问题,还是太不小心了. 我们知道,平时进行矩阵复制,无非是二重循环进行赋值操作,所以今天想改用利用memcpy进行复制操作,当然一维数组的复制在上一篇文章 ...

随机推荐

  1. 【Android开发日记】第一个任务Android Service!Service靴+重力感应器+弹出窗口+保持执行

    前言: 近期在写一个小程序,需求是手机摇一摇就弹窗出来.第一次使用了Service,学习了两天,实现了Service弹窗,开机启动,Service启动和销毁,Service保持一直执行. 满足了自己的 ...

  2. sb2-admin

    近期开发中遇到的问题总结   最近准备把后台管理系统重新设计开发下,使用了bootstrap,在网上找了个漂亮的后台模板:sb2-admin,在使用中遇到了不少问题,总结下,以免以后忘记. 1.EF5 ...

  3. 快速构建Windows 8风格应用25-数据绑定

    原文:快速构建Windows 8风格应用25-数据绑定 本篇博文主要介绍如何将UI元素与数据进行绑定.数据绑定的方向.数据更改通知.数据转换.数据绑定支持的绑定方案. 数据绑定是一种简单方式来显示数据 ...

  4. Win8.1系统下配置搭建IIS8.5+PHP5.5.4运行环境

    原文 Win8.1系统下配置搭建IIS8.5+PHP5.5.4运行环境 很多人喜欢用linux搭建php网页语言运行环境,但由于linux高度自定义化,经常需要root运行命令,略显高端,相对应的微软 ...

  5. Mysql高级之主从复制

    原文:Mysql高级之主从复制 主从复制不就是多台服务器嘛!,一个改变另一个也改变啦,内容其实都一样! 原理: 对数据库进行操作会生成一个文件,binlog(二进制文件),从服务器配置relaylog ...

  6. ORM的实现

    前言 经过一段时间的编写,终于有出来一个稳定的版本,期间考虑了多种解决方案也偷偷学了下园子里面大神们的作品. 已经有很多的ORM框架,为什么要自己实现一个?我的原因是在遇到特殊需求时,可以在ORM中加 ...

  7. TodoList开发笔记 – Part Ⅳ

    跌跌撞撞总算是把客户端开发好了,后台的代码因为不复杂,就写了些单元测试跑一跑就算通过了,大部分时间都是在调整脚本. 这一节开始部署TodoList项目. 一.了解IIS(Internet Infoma ...

  8. 完美的拥抱GitHub

    Visual Studio 2012完美的拥抱GitHub   前言 一直以来都想使用Git来管理自己平时积累的小代码,就是除了工作之外的代码了.有时候自己搞个小代码,在公司写了,就要通过U盘或者网盘 ...

  9. 测试驱动 ASP.NET MVC Type Aliase

    Type Aliase 去掉Scala的糖衣(4) -- Type Aliase 我的新博客地址:http://cuipengfei.me/blog/2013/12/23/desugar-scala- ...

  10. HttpModule应用

    由做网站操作日志想到的HttpModule应用   背景 在以前的Web项目中,记录用户操作日志,总是在方法里,加一行代码,记录此时用户操作类型与相关信息.该记录日志的方法对原来的业务操作侵入性较强, ...