数组:
它用来线性存储一系列类型相同的元素。声明数组的方法:数据类型数组标识名 [元素个数] ;
元素总是从0开始,所以最后一个元素为“元素个数 - 1”
初始化:
使用花括号括起来的一系列数值来初始化数组。数值之间用逗号隔分。每个数值对应一个元素值。
使用未初始化的数组:
在使用未初始化数组和在使用未初始化变量的问题是一样的,其值是不定的(编译器使用的是存储单元原来的 数值,对于我们来说就是垃圾数值)
初始化列表中元素数目和数组大小不一致时:
当数值数目少于数组元素时,多余的数组元素被初始为 0
初始化列表中元素数目个数大于数组大小时:
编译报错(初始值设定项太多), 如真不知道,可以省略方括号中数字,让编译器根据列表中的数值数目 来确 定数组大小。
关键字 sizeof :
它给出其后的对象或类型的大小(以字节为单位),而strlen ();函数则是以字符为单位给出字符串的长度
指定初始化项目:
就是可以选择对某个元素进行初始化。(vs 不支持,为什么不支持,这个我也不知道,可能是没有太大用吧)
为数组赋值:
声明完数组后,可以用数组的索引(元素,下标)对数组成员进行赋值。数组初始化与数组赋值在语句上的区 别,只是标识数组名前没有数据类型。c不支持把数组作为一个整体来进行赋值,也不支持用花括号括起来的 列表形式进行赋值。
数组的边界 :
它从零开始到索引减一 编译不检查索引的合法性,如果不合法数组的值是不能确定。索引只能是由整数 常量组成表达式 ,sizeof 表达式被认为是一个整数常量,并且表达式的值必须大于0,并且声明数组和要使 用数组的大小地方最是用符号常量,这样作可以避免出现索引合法性的问题( 这是在c99之前的事,c99支持 变长数组,就是可以用变量来作数组大小。vs不支持)
多维数组:
数组的数组叫二维数组。声明方法:数据类型 标识符名 [元素个数][元素个数]; 例:flaot rain [5] [12] 说明rain 是一个包含5个元素面每个元素又包含12个float 数值的数组。raim [0]是一个数组它包含12个float 数值,而它的 首个元素是riam [0] [0] 元素之间是顺序存储(前12个元素之后跟着就是第二个包含12个元素的数组)。二维数 组的初始是建立在对一维数组的初始化之上的。如10.7程序中flaot rain [5] [12]初始化如下
{
{4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6},
{8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3},
{9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4},
{7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2},
{7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2},
};
第一个数值列表赋给rain [0] [0] rain [0] [1] rain [0] [2] 到 rain [0] [11]
第二个 数值列表赋给rain [1] [0] rain [1] [1] rain [1] [2] 到rain [1] [11]
以此类推。第三个,第四个,第五个。如果数值列表的数值比声明的数组数值少默认 用零(0)初始 化, 如果多就报告 (初始值设定项太多),的错误 另外千万不能忘记最后面的那个逗号,还 有就是内部的 花括号可以省略,但最好是加上因为这样可以令代码更清晰明了。
多维数组的遍历
用嵌套循环结构建处二维数组,个部循环每执行一次,内部循环完整遍历一次。
对于数组理解个人总结:
一维数组就像是exel一行,而二维数组就像一张exel表,而多维就一个多张exel表向上叠加