C语言温故知新
文章平均质量分 77
智小星
这个作者很懒,什么都没留下…
展开
-
C语言柔性数组
1 引言定长数组包在平时的开发中,缓冲区数据收发时,如果采用缓冲区定长包,假定大小是 1k,MAX_LENGTH为 1024。结构体如下://定长缓冲区structmax_buffer{intlen;chardata[MAX_LENGTH];};数据结构的大小 >=sizeof(int)+sizeof(char) * MAX_LENGTH为了防止数据溢出的情况,data 的长度一般会设置得足够大,但也正是因为这样,才会导致数组的冗余...转载 2021-03-25 13:58:06 · 355 阅读 · 0 评论 -
嵌入式C语言面试题
1.在32位系统中,对地址为0x1C05的整形变量,使其变量的值为0x1234。int *p = (int *)0x1C05;*p = 0x1234;2.在32位系统中,下面结构体大小为:struct{ char a[5];short b;int *p;short c;}st_type; //答案:16Byte3.在32位系统中,struct s大小为8byte,使用预编译指令如何使结...原创 2021-03-17 13:58:59 · 936 阅读 · 0 评论 -
C语言-可移植性问题之硬件IO端口变更(单片机)
1.灵活地运用结构体和共用体提高自己的编程水平;c语言位域结合共用体的使用,使变量 a 的每一位对应结构体位域中的每一个变量。使对变量的位操作变得通俗易懂。 注意:不同的编译器环境的内存排布不一样,一定要注意编译系统是小端模式,还是大端模式,避免出错。2.把硬件不规则的端口IO映射到一个规则的软件端口中(思想:把硬件资源变成软件数据,然后软件再处理数据)用结构体编写一个...原创 2017-09-19 15:57:54 · 1720 阅读 · 0 评论 -
C语言-预处理之“##”和“#”的作用
双井号“##” “##”在C语言中被称为连接符(concatenator),它用来连接两个Token为一个Token(Token是编译原理中的概念,编译器在编译源程序时,会首先扫描源代码,将代码分解为一个一个的Token,Token可以是C语言的关键字,如int、for、while等,也可以是用户自定义变量,如string、num、a等)。例如下面代码中的宏:#define LWIP原创 2018-02-02 10:06:45 · 1264 阅读 · 0 评论 -
C语言-接口与实现
1. 模块化编程 面向对象编程是一种思想,和语言无关。学过C++、java等面向对象编程语言的同学,应该都知道面向对象的三大特性是封装、继承和多态。而C语言一直被蒙上了面向过程编程的面纱。工作后从事的是嵌入式软件开发,在开发过程中运用最多的还是C语言,所以在程序的设计过程中,一直想使用C语言达到面向对象编程的效果,这里将讲解使用C语言来模拟面向对象编程的实现。 在项...原创 2018-07-23 16:14:00 · 34009 阅读 · 3 评论 -
C语言-实现封装、继承和多态
虽然C语言一直被称为面向过程的设计语言,但是通过使用C语言函数指针和结构体的特性,还是能够使用C语言实现类似面向对象的封装、继承和多态的概念。下面对源码进行分析:validator.h文件首先提取了所有校验器都有的校验方法,定义了一个校验器抽象类Validator,然后定义范围校验器类RangeValidator,该类继承自校验类Validator,并包含了范围校验器特有的属性min和...原创 2018-08-16 17:05:46 · 2930 阅读 · 1 评论 -
C语言-单链表的实现
在嵌入式开发过程中,使用单链表可以很方便的解决一些问题,如下代码可在单片机程序中使用。头文件代码 #ifndef _LINKLIST_H_#define _LINKLIST_H_#include <stdlib.h>#include <stdint.h>#include <stdbool.h>/* 定义结点数据域类型 */typed...原创 2018-12-14 20:07:57 · 3372 阅读 · 0 评论