C语言 二维数组的定义、初始化以及数组元素的引用
二维数组定义的一般形式为:
类型说明符 数组名[常量表达式 ][常量表达式]
例如:float a[3][4],b[5][10];
是定义a为3行4列的数组,b为5行10列的数组。
注意不可以写成float a[3,4],b[5,10];
,这种写法是错误的。
C语言对二维数组的定义方式使得二维数组可以被看作一种特殊的一维数组:它的元素又是一个数组。
例如可以把a看作一个一维数组,它有3个元素:a[0],a[1],a[2]
这3个元素每一个元素又是一个包含四个元素的一维数组
a[0]----a[0][0] a[0][1] a[0][2] a[0][3]
a[1]----a[1][0] a[1][1] a[1][2] a[1][3]
a[2]----a[2][0] a[2][1] a[2][2] a[2][3]
把a[0],a[1],a[2]看作是一维数组的数组名,上面定义的二维数组就可以理解为定义了三个一维数组,相当于float a[0][4],a[1][4],a[2][4];
C语言的这种处理方法在数组初始化和用指针表示时更方便。
C语言中,二维数组中元素排列的顺序是按行存放的,即在内存中先顺序存放第1行的元素,接着再存放第2行的元素。
用矩阵形式(如3行4列)表示二维数组是逻辑上的概念,能形象的表示出行列关系。而在内存中,各元素是连续存放的,不是二维的,是线性的。
2.引用二维数组的元素
二维数组元素的表示形式:
数组名[下标][下标]
例如,a[2][3]表示a数组中序号为2的行序号为3的列的元素。下标应是整型表达式。
数组元素可以出现在表达式中,也可以被赋值,例如b[1][2]=a[2][3]/2;
注意:在引用数组元素时,下标值应该在已定义的数组大小的范围内。
例如:int a[3][4];
按照以上的定义,数组a可用的“行下标”的范围为0~2,
“列下标”的范围为0~3.
要严格注意在定义数组时用的a[3][4]和引用元素时的a[3][4]的区别。定义数组用的a[3][4]是来定义数组的维数和各维的大小,引用元素时用的a[3][4]中的3和4是数组元素的下标值,a[3][4]代表行序号为3,列序号为4的元素,要注意行序号和列序号都从0算起。
3.二维数组的初始化
用“初始化列表”对二维数组初始化。
(1)分行给二维数组赋初值。例如
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
这种赋初值的方法比较直观,把第一个花括号中的数据赋给第1行的元素,第二个花括号中的数据赋给第2行的元素…即按行赋初值。
(2)可以将所有数据写在一个花括号中,按数组元素在内存中的排列顺序对各元素赋初值。例如
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
(3)可以对部分元素赋初值。例如
只对各行第一列的元素赋值,其余元素的值自动为0。
inta[3][4]={{1},{5},{9}};
1 0 0 0
5 0 0 0
9 0 0 0
对各行中的某一元素赋初值。这种方法对非0元素少时比较方便。
int a[3][4]={{1},{0,6},{0,0,11};
1 0 0 0
0 6 0 0
0 0 11 0
只对某几行的元素赋初值
int a[3][4]={{1},{{5,6}};
1 0 0 0
5 6 0 0
0 0 0 0
(4)如果对全部元素都赋初值,则定义数组时对第1维的长度可以不指定,但第2维的长度不能省。例如
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
与下面的定义等价
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
系统会根据数据的总个数和第2维的长度算出第1维的长度。
在定义时也可以只对部分元素赋初值而省略第1维的长度,但应该分行赋值。例如
int a[][4]={{0,0,3},{},{0,10}};
这样的写法,能通知编译系统,数组共有3行
0 0 3 0
0 0 0 0
0 10 0 0
C语言在定义数组和表示数组时采用a[][]这中两个方括号的方式,对数组初始化十分有用。
C语言 二维数组的定义、初始化以及数组元素的引用相关推荐
- C语言 二维数组定义和使用 - C语言零基础入门教程
目录 一.二维数组简介 二.定义二维数组并初始化 1.定义二维数组 2.初始化二维数组 三.访问二维数组 四.修改二维数组 五.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 & ...
- c语言如何初始化程序,c语言二维数组如何初始化为0 - 全文
c语言二维数组如何初始化 1 有两种方法 (1)在定义时可以直接赋值来初始化 (2)在定义后可以为其元素一个个来赋值 2 示例 123456789101112131415161718192021222 ...
- C语言二维数组的初始化方法
C语言二维数组的初始化方法 01 完全赋值式一 int x[3][4]={{1,2,3,4}{5,6,7,8},{9,10,11,12}}; 02 完全赋值式二 int x[3][4]={1,2,3, ...
- c 语言定义2维字符串数组赋值,二维数组赋值字符串 c 语言 二维字符串数组赋值问题...
C语言中二维字符数组应该怎样赋值? c语言二维数组如何定义字符串????急... 二维字符数组的定义格式为:char 数组名[第一维大小][第二维大小]; 例如:char c[3][10]; //定义 ...
- C语言 | 二维数组
C语言二维数组的定义 一般形式 类型说明符 数组名[常量表达式][常量表达式]int a[10][6],b[3][4]; 用矩阵形式表示二维数组,是逻辑上的概念,能形象地表示出行列关系,而在内存中,各 ...
- c语言二维数组 ppt,C语言二维数组与指针.ppt
C语言二维数组与指针.ppt 好好考,全国计算机等级考试 二级C语言,第12讲 二维数组与指针,二维数组的定义 数组元素的引用及初始化 二维数组和指针 二维数组名和指针数组作为实参 二维数组程序举例 ...
- java二维数组扫雷,C语言二维数组实现扫雷游戏
#include //使用二维数组实现 扫雷 int main() { char ui[8][8]={ '+','+','+','+','+','+','+','+', '+','+','+','+' ...
- c语言字符串二维数组初始化为0,c语言二维数组如何初始化为0
c语言二维数组如何初始化 1 有两种方法 (1)在定义时可以直接赋值来初始化 (2)在定义后可以为其元素一个个来赋值 2 示例 123456789101112131415161718192021222 ...
- c语言定二维义数组,C语言二维数组超细讲解
用一维数组处理二维表格,实际是可行的,但是会很复杂,特别是遇到二维表格的输入.处理和输出. 在你绞尽脑汁的时候,二维数组(一维数组的大哥)像电视剧里救美的英雄一样显现在你的面前,初识数组的朋友们还等什 ...
- c语言二维数组作用,C语言二维数组知识点介绍
C语言二维数组知识点介绍 数组可以看作是一行连续的数据,只有一个下标,称为一维数组.在实际问题中有很多量是二维的或多维的,因此C语言允许构造多维数组.多维数组元素有多个下标,以确定它在数组中的位置.本 ...
最新文章
- linux那个目录存放用户密码信息,linux试题及答案
- sql 2008 R2添加对MySql的远程服务器链接
- android动态显示键盘,动态修改EditText输入键盘并隐藏或显示密码
- linux之用wget下sublime简单使用总结
- 由表单中onsubmit=return false;想到的
- 【链接】 一篇很好的有关卡特兰数的博文
- 多线程bug处理记录
- 直播电商都用上 AI 实时翻译了!歪果仁也能听懂李佳琦
- Solr连接MYSQL导入源数据生成索引
- objective-c和java哪个简单_Objective-C和Java的简单对比
- Python3按编号创建文件夹并在文件夹下创建对应编号的txt文件
- kodi android 目录,Kodi使用豆瓣刮削器建立媒体库,以及把资料库导出到片源目录...
- 风变编程python入门经典100题_零基础学Python无压力,风变编程爱了爱了!
- C盘扩容-Win10
- 360 vs QQ 有意思的大战
- Windows下装ubuntu系统
- wirehark数据分析与取证attack.pcap
- selenium和requests实现12306登录及余票查询
- 自定义协议的命令解析器
- 什么是数据工程师,主要做哪些工作?