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

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

ID:52199759

大小:293.00 KB

页数:24页

时间:2020-03-24

单片机C语言编程基础.doc_第1页
单片机C语言编程基础.doc_第2页
单片机C语言编程基础.doc_第3页
单片机C语言编程基础.doc_第4页
单片机C语言编程基础.doc_第5页
资源描述:

《单片机C语言编程基础.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、优先级及预处理另外ANSI标准C还定义了如下几个宏:_LINE_表示正在编译的文件的行号_FILE_表示正在编译的文件的名字_DATE_表示编译时刻的日期字符串,例如:"25Dec2007"_TIME_表示编译时刻的时间字符串,例如:"12:30:55"_STDC_判断该文件是不是定义成标准C程序函数atoi与atof函数名:atoi功能:把字符串转换成长整型数用法:intatoi(constchar*nptr);程序例:###########################################

2、#####################################includeintmain(void){intn;char*str="12345.67";n=atoi(str);printf("string=%sinteger=%d",str,n);return0;}########################################################################################################

3、######################################################函数名:atof功能:把字符串转换成浮点数用法:doubleatof(constchar*nptr);程序例:#includeintmain(void){floatf;char*str="12345.67";f=atof(str);printf("string=%sfloat=%f",str,f);return0;}###############################

4、################################################链表链表是C语言中另外一个难点。牵扯到结点、动态分配空间等等。用结构作为链表的结点是非常适合的,例如:structnode{intdata;structnode*next;};其中next是指向自身所在结构类型的指针,这样就可以把一个个结点相连,构成链表。链表结构的一大优势就是动态分配存储,不会像数组一样必须在定义时确定大小,造成不必要的浪费。用malloc和free函数即可实现开辟和释放存储单元。其中,mall

5、oc的参数多用sizeof运算符计算得到。链表的基本操作有:正、反向建立链表;输出链表;删除链表中结点;在链表中插入结点等等,都是要熟练掌握的,初学者通过画图的方式能比较形象地理解建立、插入等实现的过程。typedefstructnode{chardata;structnode*next;}NODE;/*结点*/正向链表NODE*create(){charch='a';NODE*p,*h=NULL,*q=NULL;while(ch<'z'){p=(NODE*)malloc(sizeof(NODE));/*强

6、制类型转换为指针*/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

7、(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->datanext;}new=(NODE*)malloc(sizeof(NODE));new->d

8、ata=x;new->next=current;if(current==h)/*判断是否是要插在表头*/h=new;elsefront->next=new;returnh;}删除结点NODE*delete(NODE*h,intx){NODE*q,*p=h;while(p!=NULL&&(p->data!=x)){q=p;p=p->next;}if(p->data==x)/*找到了要删的结点*/{if(p==h)/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。