1699|0

2015

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

单片机的C语言中数组的用法 [复制链接]

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


(1)一维数组


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


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


#include


/*


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


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


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


*/




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




void main()


{


unsigned char i;


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


{


array=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; //向数组中赋值


}


free(parray); //释放数组


while(1);


}


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


#include


#include




/*


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


此程序用以说明字符串


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


*/




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


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




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==',')


{


s='\0';


d++;


if(d==n)


{


return s+fore;


}


else


{


fore=i+1;


}


}


}


return NULL;


}




void main()


{


unsigned char c;


char string[20];


c="yahoo"[2]; //c='h'


/*正如前面所述,字符串是由字符串的首地址来表示的,


字符串"yahoo"其实就是它的首地址,那就可以这样来


取其中的某个字符:"yahoo"[2]*/


strcpy(string,"123,234,345,456");


strcpy(string,get_sub_string(string,2));


while(1);


}

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表