C语言中的一维数组和二维数组

在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。

数组中各数据的排列是有一定规律的,下标代表数据在数组中的序号。

要使用数组,必须在程序中先定义数组,即通知计算机:由哪些数据组成数组,数组中有多少元素,属于哪个数据类型。

一维数组的定义方式

定义:

类型说明符 数组名 [常量表达式]

例如:

int a[10]
说明整形数组a,有10个元素

float b[10],c[20]
说明实型数组b,有10个元素,实型数组c,有20个元素

char ch[20]
说明字符数组ch,有20个元素

注意:

1、数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。

2、数组名的书写规则应符合标识符的书写规定。

3、数组名不能与其他变量名相同。

4、方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素、但是其下标从0开始计算。因此5个元素分别为a[0],a[1],a[2],a[3],a[4]

5、不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。

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

一维数组元素的引用

数组元素的一般形式为:

数组名[下标]

注意:

其中下标只能为整形常量或整形表达式。如为小数时,C编译将自动取整。

例如:

a[5] a[i+j] a[i++] 都是合法的数组元素

再例如:

输出10个元素的数组必须使用循环语句逐个输出各下标变量:

for(i=0;i<;10;a[i])

printf("%d",a[i]);
而不能用一个语句输出整个数组。

下面的写法是错误的:

printf("%d",a);
一维数组的初始化

int a[10]={0,1,2,3,4,5,6,7,8,9};
相当于a[0]=0;a[1]=1;a[2]=2;a[3]=3;…a[9]=9;

C语言对数组的初始化赋值还有以下几点规定:

1、可以只给部分元素赋初值

当{}中值的个数少于元素个数时,只给前面的部分元素赋值。

例如:

int a[10]={0,1,2,3,4}
表示只给a[0]~a[4],5个元素赋值,而后5个元素自动赋0值。

2、只能给元素逐个赋值,不能给数组整体赋值

例如给十个元素全部赋1值,只能写成:

int a[10]={1,1,1,1,1,1,1,1,1,1};
而不能写成:

int a[10]=1;
3、如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。

例如:

int a[5]={1,2,3,4,5};
可写为:

int a[]={1,2,3,4,5};
二维数组的定义

定义:

类型说明符 数组名[常量表达式1][常量表达式2]

其中常量表达式1表示第一维下标的长度,常量表达式2表示第二维下标的长度。

例如:

int a[3][4]
说明了一个三行四列的数组,数组名为a,其下标变量的类型为整形。该数组的下标变量共有3×4个,即:

a[0][0] a[0][1] a[0][2] a[0][3]

a[1][0] a[1][1] a[1][2] a[1][3]

a[2][0] a[2][1] a[2][2] a[2][3]

在C语言中,二维数组是按行排列的。即先存放a[0]行,再存放a[1]行,最后存放a[2]行。每行中有四个元素也是依次存放。由于数组a说明为int类型,该类型占两个字节的内存空间,所以每个元素均占有两个字节。

二维数组元素的引用

二维数组的元素也称为双下标变量,其表示的形式为;

数组名[下标][下标]

其中下标应为整型常量或整形表达式。

例如:

a[3][4]

表示a数组三行四列的元素。

二维数组的初始化

二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可以按行分段赋值,也可以按行连续赋值。

例如对数组a[5][3]

1、按行分段赋值可写为:

int a[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,78,90},{76,78,98}}

2、按行连续赋值可写为:

int a[5][3]={80,75,92,61,65,71,59,63,70,85,78,90,76,78,98}

这两种赋初值的结果是完全相同的。

发布了43 篇原创文章 · 获赞 3 · 访问量 1341

猜你喜欢

转载自blog.csdn.net/it_xiangqiang/article/details/104344394