6-数组

1、数组概念

在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

数组:具有相同类型的数据组成的序列,是有序集合。

数组元素  由其所在的位置序号(称数组元素的下标)来区分。

用数组名与下标  可以用统一的方式来处理数组中的所有元素, 从而方便的实现处理一批具有相同性质数据的问题。

注意:数组元素有序不是指元素大小顺序  

2、一维数组的定义

定义方式:类型说明符 数组名 [常量表达式];

例如:  int a[10];

它表示定义了一个整形数组,数组名为a,此数组有10个元素,10个元素都是整型变量!

注意点:

1)类型说明符是任一种基本数据类型或构造数据类型。对于同一个数组,其所有元素的数据类型都是相同的。

2)数组名是用户定义的数组标识符。书写规则应符合标识符的书写规定。

3)方括号中的常量表达式表示数据元素的个数,也称为数组的长度。

4)允许在同一个类型说明中,说明多个数组和多个变量。

       例如: int a,b,c,d,k1[10],k2[20];

5)a[10],表示a数组有10个元素,注意下标是从0开始的,这10个元素是,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。请持别注意,按上面的定义,不存在数组元素a[10]。

6)C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如,下面这样定义数组是不行的:

常见的错误:

float a[0];  /* 数组大小为0没有意义 */

 ② int b(2)(3);    /* 不能使用圆括号 */

 ③ int k, a[k];    /* 不能用变量说明数组大小*/

数组元素的一般形式为:数组名[下标]

(下标可以是整型常量或整型表达式。)

例如:  a[0]= a[5]+a[7]-a[2*3]

          a  [ i+j ]

          a  [ i++ ]

都是合法的数组元素。

注意点:

1)数组元素通常也称为下标变量。必须先定义数组才能使用下标变量。在C语言中只能逐个地使用下标变量,而不能一次引用整个数组。

2)定义数组时用到的“数组名[常量表达式]” 和引用数组元素时用到的“数组名[下标]” 是有区别的。

3、一维数组的引用

初始化赋值的一般形式为: 类型说明符 数组名[常量表达式]={值,值,……值};

(1)在定义数组时对数组元素赋以初值。例如: int a[10]= {0,1,2,3,4,5,6,7,8,9};

(2)可以只给一部分元素赋值。例如: int a[10]= {0,1,2,3,4};   

定义a数组有10个元素,但花括弧内只提供5个初值,这表示只给前面5个元素赋初值,后5个元素值为0。不信的话可以调试一下!!尽信书则不如无书!!

(3)如果想使一个数组中全部元素值为0,

 可以写成  int  a[10]={0,0,0,0,0,0,0,0,0,0};         或 int  a[10]={0};

(4)在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。

例如:    int a[5]= {1,2,3,4,5};   也可以写成:  int a[ ]= {1,2,3,4,5};

在第二种写法中,花括弧中有5个数,系统就会据此自动定义a数组的长度为5

4、二维数组的定义

形式:数据类型  数组名 [常量表达式1][常量表达式2] ={初始化数据};

(1) 直接分行给二维数组赋初值。如:int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

(2) 可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。如: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

(3) 可以对部分元素赋初值。如: int a[3][4]={{1},{5},{9}};

(4)如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。如:

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};

发布了18 篇原创文章 · 获赞 6 · 访问量 1592

猜你喜欢

转载自blog.csdn.net/Desperado376/article/details/104195206