第六章 数组(一)

2023-12-20 04:29:58

数组是一种有序数据的集合,在集合中包含若干个元素,并且每个元素的数据类型都相同,这些数组元素中的每一个都可以通过数组名加数组下标的方式来引用,也可以将每一个数组元素理解成一个单独的同类型变量 ,那么毫无疑问 ,整个数组就代表着一组(多个)同类型的变量。

一、一维数组

前面章节讲解了一些基本数据类型,如 int、char、float、double等。如果想定义100个整型变量,怎样定义呢?int a1,a2,a3,a4…a100;这样得有多少行代码才能定义完?为了解诀定义 100个甚至定义更多个整型变量(也可以是其它类型),定义 的问题 ,引入了"数组”。

1、一维数组的一般形式

格式:

类型名 数组名[常量表达式];

例:int a[10];

上面这行代码定义 了一个数组,名字为 a,这个数组有 10个元素,有几点要说明:

(1)数组名就是变量名 ,如上面的 a。

(2)数组名后面是中括号(方括号)括起来的常量表达式,如上面的 [10],注意不能写成圆括号,另外常量表达式一般都是一个数字,虽然非要写成诸如 2*5 也可以,但直接写10更直观。

(3)所谓一维数组,也就是带一对中括号[ ],以后还会学带两对中括号[ ][ ]的数组,叫二维数组,后面再讲。

(4)a[10]中的数字10 表示 a 数组中有 10 个元素,下标从0开始,这 10个元素是 a[0],a[1],a[2]......a[9]。注意,不包括a[10],下标范围是0-9。a[10]是非法的,但系统对于这种非法行为并不提示错误,这会造成巨大的程序运行安全隐患,程序可能会立即崩溃、不定时崩溃、出现无法预期的结果等诡异情形。

(5)如果定义一个含有 100个元素的 a数组(int a[100];),那么这 100个元素的合法引用范围应该是a[0]~a[99],同样不包括 a[100]。

(6)定义数组时提到的常量表达式,可以是一个数字如 10,也可以是常量表达式如 2+8,但不能包含变量,也就是说 C 语言不允许对数组的大小做动态定义,数组大小不能依赖于程序运行过程中变量的值,换一种理解方式数组定义的时候,数组大小就已经固定了。

例:

int i=8;

int a[i];? ? //这行代码是非法的,因为i是变量,变量不可以用于定义数组大小

(7)int a[10]; 相当于定义了 10个整型变量 a[0]~a[9],那如果想一次定义 1000个变量,也非常简单,int a[1000];即可,还是要特别注意,定义后能引用的数组元素是 a[0]~a[999]。

2、一维数组元素的引用

C 语言规定,只能引用数组中的元素(就像使用普遍变量一样),不能引用整个数组。

数组元素的引用形式为:?

数组名[ 下标]

下标一般部是整型常量。可以是一个数字如 10,也可以是常量表达式如 2+8或2*8。

例:给数组元素赋值,并输出数组元素的值。

3、一维数组的初始化

一维数组在定义时进行初始化(给初值)

(1)定义数组的时候不给初值。

例:int a[10];? ? //只定义不给初值,则数组内部的元素值是无法预料的随机值

(2)定义数组的时候给初值。

例:int a[10]={9,8,10,20,9,8,7,6,5,4};? ?? //正好10个数字,a[0]~a[9]都有值了

(3)可以只给一部分数组元素初值,其他数组元素的值系统默认为0。

例:

(4)如果要对全部数组元素赋初值,可以不指定数组长度。把代表数组长度的数字去掉,也就是中括号里面没内容了。

例:int a[ ]={1,2,3,4,5};

当中括号里面没有数字时,系统会猜测这个数组在定义并赋初值这个语句里面给了多少个初值,有多少个初值这个数组的长度就是多少 ,例如这里有 5 个初值,系统就认定定义的是int a[5]={1,2,3,4,5};?

文章来源:https://blog.csdn.net/weixin_30479905/article/details/135086722
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。