前言:
现在姐妹们对“c语言数组初始值”大致比较注重,朋友们都需要知道一些“c语言数组初始值”的相关知识。那么小编同时在网上搜集了一些有关“c语言数组初始值””的相关文章,希望姐妹们能喜欢,咱们一起来学习一下吧!相对于简单数据类型而言,数组(Array)是一系列相同数据类型对象的集合。这个集合共享同一个变量名,其中单个对象(也称数组的元素)需使用数组下标访问。
(1) 语法定义
数组定义由类型名标识符和维数组成,如:
int nArray[5] = {0};
以上代码定义了一个int类型数组,其数组变量名为nArray。“[5]”表达该数组有5个元素,一个中括号代表它是一维数组,其元素的访问下标为0~4。“{0}”是C语言的数组直接初始化方法,表达该数组所有元素均被初始化为0。
除了直接初始化外,数组是不可能直接用运算符“=”赋值的,但可以给数组指定元素用运算符“=”赋值。如:
nArray[2] = 123;
注意:数组元素的下标必然是从0开始。所以以上代码实际是给数组nArray的第3个元素赋值为123。
(2) 多维数组
数组可以是多维数组,每一维用一个方括号对来指定。如:
int nArray2[2][3];
以上代码定义了一个int类型二维数组,第一维数量为2,第二维数量为3。可以理解为该数组有两个一维数组组成,每个一维数组均包含3个元素。
多维数组使用直接初始化方法时,可以按维数初始化,如
int nArray2[2][3] = {{1,2,3},{4,5,6}};
也可以像一维数组,按元素存放顺序初始化,如:
int nArray2[2][3] = {1,2,3,4,5,6};
二维数组元素的访问下标需要标明每一维的具体下标位置,如nArray2[0][2]代表以上数组的第3个元素。
(3) 数组内存
数组的内存占用是连续的。一个数组占用的内存大小,是其所有数组元素占用内存的总大小。如以下一维数组:
int nArray[5] = {1,2,3,4,5};
在VS2010调试器里内存窗口查看(在调试运行时,可点击“调试”-->“窗口”-->"内存"-->"内存1"弹出,在其地址栏拷贝nArray再按回车键)如下:
从以上图片可看出该数组内存共占20字节,即sizeof(nArray)=20。注意:int类型占4个字节,Windows下内存按小端(低字节存放于低地址)排列,所以整型1的内存是01 00 00 00。
再如以下二维数组:
int nArray2[2][3] = {{1,2,3},{4,5,6}};
在VS2010调试器里内存窗口查看如下:
(4) 实用说明
如数组需初始化为非0值,可以用内存操作函数memset或for循环遍历赋值进行。数组的访问下标绝对不能大于等于维数,如对5个元素的一维数组nArray,nArray[5]会导致访问越界,程序异常崩溃。C语言风格的字符串实质也是一个数组(一维char类型数组,有效元素存放可显示字符,以0结尾),所有它有所有的数组特性。C++的数组类型不常用,一般尽量使用STL容器代替,如vector。使用数组需计算连续内存开销,如占用过大,需改为用占用不连续内存的STL容器代替,如list。尽量不要使用多维数组,连续内存开销过大,且代码难于阅读。可使用STL容器的嵌套来实现。在STL的库文件“algorithm”里,提供了一些查找、排序、删除、交换等算法,可直接用于数组操作。这些算法既可应用于各种类型的数组,也可应用于容器,故称泛型算法。
最后,让我们在VS2010库文件(如“winctrl2.cpp”)里找找数组的身影:
学习目标“最简单实用的数组类型介绍”已完成[再见]
标签: #c语言数组初始值 #多维数组的算法有哪些类型 #c语言数组的类型 #c语言数组的类型有哪些