C语言数组

目录

1.C语言一维数组的定义和使用

2.C语言二维数组的定义和使用

3.C语言字符数组和字符串 


1.C语言一维数组的定义和使用

通过对前面知识的学习,我们已经知道如何定义和使用各种变量,但总有不够用的时候。举个例子,我要记录一个班32个同学C语言这科的成绩,难道要定义32个变量?嗯,这个当然可以,但是似乎好像觉得怪怪的~可以再联想一番,如果几百个人或者更多呢?

丹尼斯·里奇(C语言的发明者,Unix之父,必须要牢记这位大师)早就为我们准备了数组这种类型。数组是同类型有序数据的集合,可以为这些数据的集合起一个名字,称为数组名。该集合中的各个数据项称为数组元素,每个元素可用数组名和下标表示。

在C程序设计中,数组是一个十分有用的数据类型,下面将对数组进行详细介绍。

一维数组(姑且先叫一维数组)的定义和使用:

在C语言中使用数组必须先进行定义,一维数组的定义方式如下:

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

其中类型说明符是任意一种基本数据类型或构造数据类型,它定义了全体数组成员的数据类型,可以发现要比我们定义N个元素要方便的多了,如果把一个元素看作一个点,那么一维数组就像一条线。

名是用户定义的数组标识符,方括号中的常量表达式表示数据元素的个数,也称为数组的长度。需要注意的是,数组中的元素下标是从0开始计算的,例如:

int a[100]; //定义一个数组名为a,存储100个int类型的数组,其元素分别是a[0]~a[99]
float b[10]; //数组名为b的,存储10个float类型的数组,其元素分别是b[0]~b[9]
char c[256]; //定义一个数组名为c的字符型数组,长度为256,其元素分别是c[0]~c[255]

 当在函数中只定义数组时,数组里的值和函数里定义一个变量的值一样,都是未初始化过的,我们也可以定义的时候并初始化赋值,并且,当给部分元素赋初值的时候,未被赋值的元素将自动赋值为0,更细一些,int类型未被赋值的元素为0,浮点型为小数类型,而字符类型则为'\0',例如:

int a[100]={1,2,3,4,5}; //定义一个整型数组a,前5个元素即赋值为1,2,3,4,5,后95个元素值值全部为0
float b[10]={1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,0.0}; //定义float数组b并对全部float类型的元素都分别赋值
char c[256]={'C','l','a','n','g','u','a','g','e'}; //定义一个数组名为c的字符型数组,并对前9个元素进行赋值,其余元素全部为'\0'

2.C语言二维数组的定义和使用

通过对一维数组的学习,我们已经能想到,一维数组是呈线性排布的,如果我们需要比如矩阵这样的结构时,该怎么办?一个最直观的想法就是每一行都用一个一维数组存放,那么有几行,就需要几个一维数组。等等,还记得上节课的点与线的关系吗?那矩阵这种结构就是线与面的关系!丹尼斯·里奇同样为我们提供了二维数组多维数组)这样的东西,很好地解决了这个问题。

二维数组的定义
类型说明符 数组名[行数][列数];

例如:

int a[3][4]; /*定义一个整形二维数组a,有3行4列共12个元素分别为:
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]
*/
char arry[10][10]; //定义一个字符型二维数组arry,有10行10列,依次为arry[0][0]~arry[9][9]共100个元素

二维数组的初始化

二维数组可以用以下两种方式初始化赋值:

int a[3][4]={{1,2,3,4},{10,20,30,40},{100,200,300,400}}; //定义一个三行四列的二维数组,按行赋值
int a[3][4]={1,2,3,4,10,20,30,40,100,200,300,400}; //定义一个三行四列的二维数组并对其中的12(3*4)个元素进行赋值

您可能会想,为什么第二种也可以?这样的话,定义int a[3][4]和定义int a[12]有什么区别呢?真相是:二维数组与一维数组一样在内存中的存储也是按照线性排布的。

3.C语言字符数组和字符串 

用来存放字符的数组称为字符数组。字符数组的各个元素依次存放字符串的各字符,字符数组的数组名代表该数组的首地址,这为处理字符串中个别字符和引用整个字符串提供了极大的方便。

字符数组的定义形式与前面介绍的数值数组相同,例如:

char c[10];

字符数组也允许在定义时进行初始化赋值,例如:

char c[6]={'c', ' h ', 'i', 'n', 'a' , '\0' };

对字符数组的各个元素逐个赋值后,各元素的值为:

c[0]= 'c',c[1]= 'h',c[2]= 'i',c[3]= 'n',c[4]= 'a',c[5]= '\0';

其中,‘\0’为字符串结束符。如果不对c[5]赋任何值,‘\0’会由系统自动添加。字符数组也可采用字符串常量的赋值方式,例如:

char a[]={"china"};

熟悉了C语言中字符串的存储表达方式之后,大家可以扩展学习:字符串常见的处理函数,包括strcmp、strcpy、strlen、strcat等等,增加字符串的处理能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赔罪

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值