首页 > 范文大全 > 正文

C语言中数组的元素

开篇:润墨网以专业的文秘视角,为您筛选了一篇C语言中数组的元素范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:数组是程序设计中最常用的数据结构。数组可分为数值数组(整数组,实数组),字符数组以及指针数组和结构数组。本文将各种类型的数组以实例进行了分析说明。

关键词:数组;元素;数据;类型

中图分类号:TP313文献标识码:A文章编号:1007-9599 (2010) 16-0000-02

Elements of the Array in C-language

Zhang Kexing

(Foreign Language Teachers College of Taiyuan University,Taiyuan030012,China)

Abstract:The array is the most commonly used programming data st-

ructure.Array can be divided into array of values(integer group,real array),a character array and pointer array and the array of structures.

This array will be examples of various types were analyzed and explained.

Keywords:Array;Element;Data;Type

一、引言

数组是相互关联的一批数据的序列,序列中的数据称为数组的元素,可按照排列顺序编号,起始编号一般为0,前后两个数据的编号有差异,通过编号可以唯一指定数组中的数据成员。数组中的元素可以是基本类型,也可以是构造类型。按照数组元素的不同可将数组分为数值数组、字符数组、指针数组、结构数组。

二、数值数组

数值数组是指数组元素是整型、实型、及其相关类型的数据,简单说,就是元素是数字的数组。

例1:

main()

{

int i,a[10];

for(i=0;i

a[i]=i;

for(i=9;i>=0;i--)

printf("%d ",a[i]);

}

在该例中,第一个for语句给数组a中的10个元素赋值为整形数据0-9,赋值以后数组中数据如下:

第二个for语句将数组a中的10个数字反序输出,即9、8、7、6、5、4、3、2、1、0

数值数组是数组中使用率最高的数组,需要注意的是一个数组中的数据必须是同一种类型的数据,

{int a[3];

a[0]=3;

a[1]=2.5;

a[2]=3.0;}

是不合法的。

三、字符数组

C语言没有专门定义字符串数据类型(如其他语言中的string),它用以'\0'结尾的字符数组来表示一个逻辑意义上的字符串。

字符数组主要有两种用途,(1)存储字符串,(2)存储字符或字符变量。这两个是不同的,刚开始接触时很容易混淆。下面进一步分析这两者的不同。

首先初始化时不同,用于存储字符串,例如:char str[]="Hello"; 用于存储字符或字符变量,例如:char Chars[]={‘H‘‘e‘,‘1‘‘1‘,‘o‘}。这两者的存储方式是一样的,但是存储内容稍微有所不同,那就是第一种情况会在结尾加上‘\0’,存储情况类似于{‘H‘‘e‘,‘1‘‘1‘,‘o‘,‘\0‘},存储空间会比第二种情况大一点,但是这个存在空间并不被计算进字符串(其实只是字符数组)变量中。

C语言中提供的字符串操作函数其实是针对于结尾是‘\0‘的字符数组进行的。输出函数printf中的输出参数%s也是针对于结尾是‘\0‘的字符数组。

另外,还有一种方法可以定义字符串(其实也是字符数组),声明如下:

char * string = "this is a point charArray.";字符指针指向字符数据的第一个字符的位置。

最后,有两点特别说明。

(1)字符串常量给出的是地址值。如

char *p, s[10];

p="hello";//正确

(2)不能用赋值语句给字符数组整体赋一串字符,例:

char str[10];

str = "abc";//错误

例2:

char c[10]={‘c’, ‘’, ‘p’, ‘r’, ‘o’, ‘g’, ‘r’, ‘a’,’m’};

赋值后数组元素如下:

四、指针数组

在C语言中,一个数组的元素值为指针则是指针数组。 指针数组是一组有序的指针的集合。指针数组的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量。

指针数组说明的一般形式为:

类型说明符*数组名[数组长度]

其中类型说明符为指针值所指向的变量的类型。

例如:

int *pa[3]

表示pa是一个指针数组,它有三个数组元素,每个元素值都是一个指针,指向整型变量。

例3:

通常可用一个指针数组来指向一个二维数组。指针数组中的每个元素被赋予二维数组每一行的首地址,因此也可理解为指向一个一维数组。

main(){

int a[3][3]={1,2,3,4,5,6,7,8,9};

int *pa[3]={a[0],a[1],a[2]};

int *p=a[0];

int i;

for(i=0;i

printf("%d,%d,%d\n",a[i][2-i],*a[i],*(*(a+i)+i));

for(i=0;i

printf("%d,%d,%d\n",*pa[i],p[i],*(p+i));

}

本例程序中,pa是一个指针数组,三个元素分别指向二维数组a的各行。然后用循环语句输出指定的数组元素。其中*a[i]表示i行0列元素值;*(*(a+i)+i)表示i行i列的元素值;*pa[i]表示i行0列元素值;由于p与a[0]相同,故p[i]表示0行i列的值;*(p+i)表示0行i列的值。

在C语言中,数组元素全为指针的数组成为指针数组。

一维指针数组的定义形式为:“类型名*数组标识符[数组长度]”。

例如,一个一维指针数组的定义:int *ptr_array[10]。

指针数组的含义:

指针数组中的每一个元素均为指针,即有诸形如“*ptr_array[i]”的指针。

由于数组名本身也是一个指针,因此指针数组中的元素亦可以表示为“*(*(ptr_ayyry+i))”。又因为“()”的优先级较“*”高,且“*”是右结合的,因此可以写作**(ptr_array+i)。

五、结构数组

数组的元素也可以是结构类型的。因此可以构成结构型数组。结构数组的每一个元素都是具有相同结构类型的下标结构变量。在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体。如一个班的学生档案,一个车间职工的工资表等。

方法和结构变量相似,只需说明它为数组类型即可。

例4:

struct stu

{

int num;

char *name;

char sex;

float score;

}boy[5];

定义了一个结构数组boy,共有5个元素,boy[0]~boy[4]。每个数组元素都具有struct stu的结构形式。

例5:计算学生的平均成绩和不及格的人数。

struct stu

{

int num;

char *name;

char sex;

float score;

}boy[5]={

{101,"Li ping",'M',45},

{102,"Zhang ping",'M',62.5},

{103,"He fang",'F',92.5},

{104,"Cheng ling",'F',87},

{105,"Wang ming",'M',58},

};

main()

{

int i,c=0;

float ave,s=0;

for(i=0;i

{

s+=boy[i].score;

if(boy[i].score

}

printf("s=%f\n",s);

ave=s/5;

printf("average=%f\ncount=%d\n",ave,c);

}

本例程序中定义了一个外部结构数组boy,共5个元素,并作了初始化赋值。在main函数中用for语句逐个累加各元素的score 成员值存于s之中,如score的值小于60(不及格)即计数器C加1,循环完毕后计算平均成绩,并输出全班总分,平均分及不及格人数。

六、总结

数组是程序设计中最常用的数据结构。数组可分为数值数组(整数组,实数组),字符数组以及指针数组和结构数组。数组可以是一维的,二维的或多维的。数组类型说明由类型说明符、数组名、数组长度(数组元素个数)三部分组成。要想将不同的数据用不同类型的数组存放,就需要深入了解每一种类型的数组及其特点,这样才能灵活运用,充分发挥每种数据类型的长处。

参考文献:

[1]谭浩强.C程序设计教程[M].北京:清华大学出版社,2007,7

[2]李岩.C语言程序设计基础与上机知道[M].北京:清华大学出版社,2006,3

[3]马秀丽等.C语言程序设计[M].北京:清华大学出版社,2008,3

[4]罗坚.C语言程序设计[M].北京:中国铁道出版社,2009,2

作者简介:

张科星(1980-),女,山西太原人,研究生,太原大学外语师范学院,助教,研究方向:网络,计算机教育。

*本论文为山西省教育科学十一五规划(GH-09199)“高校信息化教育资源建设和应用的研究”的课题成果。