单片机C语言编程基础.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:24 大小:293KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

单片机C语言编程基础.doc

单片机C语言编程基础.doc

预览

免费试读已结束,剩余 14 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

优先级及预处理另外ANSI标准C还定义了如下几个宏:_LINE_表示正在编译的文件的行号_FILE_表示正在编译的文件的名字_DATE_表示编译时刻的日期字符串,例如:"25Dec2007"_TIME_表示编译时刻的时间字符串,例如:"12:30:55"_STDC_判断该文件是不是定义成标准C程序函数atoi与atof函数名:atoi功能:把字符串转换成长整型数用法:intatoi(constchar*nptr);程序例:################################################################################include<stdlib.h>intmain(void){intn;char*str="12345.67";n=atoi(str);printf("string=%sinteger=%d\n",str,n);return0;}##############################################################################################################################################################函数名:atof功能:把字符串转换成浮点数用法:doubleatof(constchar*nptr);程序例:#include<stdlib.h>intmain(void){floatf;char*str="12345.67";f=atof(str);printf("string=%sfloat=%f\n",str,f);return0;}###############################################################################链表链表是C语言中另外一个难点。牵扯到结点、动态分配空间等等。用结构作为链表的结点是非常适合的,例如:structnode{intdata;structnode*next;};其中next是指向自身所在结构类型的指针,这样就可以把一个个结点相连,构成链表。链表结构的一大优势就是动态分配存储,不会像数组一样必须在定义时确定大小,造成不必要的浪费。用malloc和free函数即可实现开辟和释放存储单元。其中,malloc的参数多用sizeof运算符计算得到。链表的基本操作有:正、反向建立链表;输出链表;删除链表中结点;在链表中插入结点等等,都是要熟练掌握的,初学者通过画图的方式能比较形象地理解建立、插入等实现的过程。typedefstructnode{chardata;structnode*next;}NODE;/*结点*/正向链表NODE*create(){charch='a';NODE*p,*h=NULL,*q=NULL;while(ch<'z'){p=(NODE*)malloc(sizeof(NODE));/*强制类型转换为指针*/p->data=ch;if(h==NULL)h=p;elseq->next=p;ch++;q=p;}q->next=NULL;/*链表结束*/returnh;}逆向建立NODE*create(){charch='a';NODE*p,*h=NULL;while(ch<='z'){p=(NODE*)malloc(sizeof(NODE));p->data=ch;p->next=h;/*不断地把head往前挪*/h=p;ch++;}returnh;}用递归实现链表逆序输出:voidoutput(NODE*h){if(h!=NULL){output(h->next);printf("%c",h->data);}}插入结点插入结点(已有升序的链表):NODE*insert(NODE*h,intx){NODE*new,*front,*current=h;while(current!=NULL&&(current->data<x))/*查找插入的位置*/{front=current;current=current->next;}new=(NODE*)malloc(sizeof(NODE));new->data=x;new->next=current;if(current==h)/*判断是否是要插在表头*/h=new;elsefront->