单片机C语言中数组的用法

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机C语言中数组的用法

时间:2011-10-11 09:37:07 来源:作者:

数组是由具有相同类型的数据元素组成的有序集合。数组是由数组名来表示的,数组中的数据由特定的下标来唯一确定。引入数组的目的,是使用一块连续的内存空间存储多个类型相同的数据,以解决一批相关数据的存储问题。数组与普通变量一样,也必须先定义,后使用。数组在C51语言的地位举足轻重,因此深入地了解数组是很有必要的。下面就对数组进行详细的介绍。

(1)一维数组

一维数组是最简单的数组,用来存放类型相同的数据。数据的存放是线性连续的。

用以下例程说明数组的建立、数据操作:

#include

/*

-----------------------------------------------------

此程序用以说明数组的建立、数据操作

-----------------------------------------------------

*/

unsigned char array[10];//定义一个有10个单元的数组

void main()

{

unsigned char i;

for(i=0;i<10;i++)

{

array[i]=i; //用下标调用数组中的元素

}

/*

---------------------------------------

array |9|8|7|6|5|4|3|2|1|0| [9]~[0]

---------------------------------------

*/

while(1);

}

数组名是用来表示数组的标识,其实它是数组的首地址,即一个指针。不过它所表示的地址是固定的,不能改动。如前几章所述的相关内容,array[2]与*(array+2)是等效的,不过不能用array++,因为array是常量。

上面的程序中的数组是静态建立的,以下例程来用说明数组的动态建立。

#include

#include

/*

-----------------------------------------------------

此程序用以说明数组的动态建立

-----------------------------------------------------

*/

unsigned char *parray;

void main()

{

unsigned char i;

parray=(unsigned char *)malloc(10); //动态创建一个数组

for(i=0;i<10;i++)

{

parray[i]=i; //向数组中赋值

}

free(parray); //释放数组

while(1);

}

字符串是数组的一个重要特例。它的每个单元的数据均为字符类型(char),最后一个单元为''(0x00),用来表示字符串的结束。C51函数库中提供了专门对字符串进行处理的函数,用以下例程说明:

#include

#include

/*

-----------------------------------------------------

此程序用以说明字符串

-----------------------------------------------------

*/

char s[]={'y','a','h','o','o',''};

//定义一个字符串,并对它进行初始化,以''结束

void main()

{

char s_temp[10];

strcpy(s_temp,s);//strcpy位于string.h头文件中,实现字符拷贝

//s为一个常量,不能s++

strcpy(s_temp,"yahoo");//与上面的语句等效

while(1);

}

以下列出几种字符串的灵活用法,希望能够帮助读者深入了解字符串:

#include

#include

/*

-----------------------------------------------------

此程序用以说明字符串的灵活运用

-----------------------------------------------------

*/

/*

-----------------------------------------------------

此函数从字符串s中提取第n个子串,子串间由','分隔

返回指向该子串的指针

-----------------------------------------------------

*/

char *get_sub_string(char *s,unsigned char n)

{

int i;int d=0;int fore=0;

int len=strlen(s);

for(i=0;i

{

if(s[i]==',')

{

s[i]='';

d++;

if(d==n)

{

return s+fore;

}

else

{

fore=i+1;

}

}

}

return NULL;

}

void main()

{

相关文档
最新文档