c++ 结构体初始化_单片机C语言 - 基于结构体的面向对象编程技巧
单片机C语言 - 基于结构体的面向对象编程技巧
一、面向对象
面向对象是软件开发方法,是相对于面向过程来讲的。通过把数据与方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式
单片机C语言的面向对象编程,是利用结构体,将变量、指针、函数等进行封装,达到编程更加方便、程序可读性更好、方便移植等目的。
二、知识说明
1、结构体
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。
常用的定义方法:
typedef struct
{
变量;
指针;
函数指针;
} 结构体名称_t;
2、指针
指针是地址,指向内存中的变量。
常用的定义方法:数据类型 * 指针名;
3、函数指针
函数指针是指向函数的指针变量。
常用的定义方法:返回值类型 ( * 指针变量名) ([形参列表]);
三、编程说明
1、主函数如下:
系统初始化后,进入主循环,通过结构体调用system文件的函数。
2、结构体类型定义
定义1个变量与2个函数指针。
串口类型定义方法,通过结构体,将串口进行封装。
3、结构体变量定义
定义结构体变量,并进行初始化。 对于函数指针,在c文件中定义函数,再将函数名赋值给函数指针,这样,就可以通过结构体的函数指针调用c文件中的函数。
4、运行函数
由于使用结构体的函数指针调用函数,函数可以声明为static类型,安全性更好。
四、小结
单片机C语言的面向对象编程,是利用结构体,将变量、指针、函数等进行封装,达到编程更加方便、程序可读性更好、方便移植等目的。
面向对象编程的知识点很多,本文只是简要的介绍了下,仅仅起到抛砖引玉的作用,日后设计过程中,需要不断的总结经验,沟通交流,以达到真正的理解,灵活运用。
c++ 结构体初始化_单片机C语言 - 基于结构体的面向对象编程技巧相关推荐
- c++ 结构体初始化_【干货】c语言基础语法——结构体
1.关于C语言结构体的引入 学习环境搭建1_Linux C语言_嵌入式开发工程师-创客学院www.makeru.com.cn 在实际问题中有时候我们需要几种数据类型一起来修饰某个变量. 例如一个学生 ...
- go结构体初始化_浅谈golang结构体偷懒初始化
运行一段程序,警告: service/mysqlconfig.go:63::error: golang.guazi-corp.com/tools/ksql-runner/model.CreatingM ...
- 共用体变量不能在定义时初始化_【C语言资料更新】共用体联合体
文/Edward 共用体又称为联合体,它是C语言中的一种特殊的数据类型.它允许用户在相同的内存位置存储不同的数据类型.用户可以定义一个带有多成员的共用体,但是任何时候这些成员都共享同一块内存.举个例子 ...
- c语言定义不定长数组初始化_大学C语言期末考试练习题(带详解答案)(1)
链接:https://pan.baidu.com/s/1d2Bb1vNTyBNpFGneIAicVw 提取码:y7uw 单项选择题 C语言的基本单位是 函数 1.(A )是构成C语言程序的基本单位. ...
- c语言结构体成员变量私有化,C语言中结构体变量私有化详解
C语言中结构体变量私有化详解 背景介绍 操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚 ...
- 青花瓷音乐的单片机c语言程序,c语言曲谱_单片机c语言音乐简谱代码
51单片机曲谱编写音乐程序,我看不懂曲谱,谁能教下我! //<世上只有妈妈好>51单片机C语言程序和音乐采灯程序 //此程序在硬件上调试通过 //本程序的单片机晶振采用11.0592MHZ ...
- c语言结构体编辑学生成绩管理,C语言基于结构体的学生信息管理系统实现
宋福英 摘 要: 中国高校为保证学生信息安全,各分院的学生信息都在一个相对封闭的闭环内共享.中国高校在校生人数逐年递增,给高校的信息管理带来不小压力.C语言兼具高级语言和汇编语言的特点,简洁.紧凑. ...
- 简单谱子C语言程序,c语言曲谱_单片机c语言音乐简谱代码
51单片机曲谱编写音乐程序,我看不懂曲谱,谁能教下我! //<世上只有妈妈好>51单片机C语言程序和音乐采灯程序 //此程序在硬件上调试通过 //本程序的单片机晶振采用11.0592MHZ ...
- C语言 基于结构体的程序设计(PTA)
一.实验目的 1.掌握C语言中结构体类型的定义和结构体变量的定义和引用. 2.掌握用结构指针传递结构数据的方法. 二.实验内容 1. 计算职工工资 给定N个职员的信息,包括姓名.基本工资.浮动工资和支 ...
最新文章
- Emptiness 空值语义
- Linux Container 研究报告
- 为什么任何对象都可以实现锁
- 使用root用户安装Hybris遇到的错误
- c语言统计数据,数据统计
- python储存_python数据储存
- 蓝桥杯小朋友排队java_[蓝桥杯][历届试题]小朋友排队 (C++代码)
- Bower和npm有什么区别?
- Errors running builder 'DeploymentBuilder'
- Linux中weblogic的设置
- 研究生毕业设计的课题的基本步骤以及每个步骤的关键点?
- 全网最全数据分析师面试干货-业务逻辑篇
- 【玩转微信公众平台之中的一个】序章(纯粹扯淡)
- opencv 物体尺寸测量
- 【opencv-python】 cv2.subtract(...)图片减法
- 关于uniapp cheneckbox复选框不显示对号的问题
- Python分别用单线程,多线程,异步协程爬取一部小说,最快仅需要5s
- springboot修改pdf内容
- 虚拟主机和物理服务器有什么不同
- 服务器一般装在哪个位置,立尔讯塔式服务器一般使用在哪些地方?
热门文章
- mongodb数组更新操作符$addToSet
- android开发,加法,上课写的demo
- 给定一个整数数组,判断是否存在重复元素。
- cvtcolor python opencv_13行代码实现:Python实时视频采集(附源码)
- python中嵌套函数的应用实例-实例详解python函数的对象、函数嵌套、名称空间和作用域...
- iVMS-4200 Vs区别_杏林早报 | 西芹、水芹、旱芹...功效有区别,吃对才真降血压!...
- java调用日期控件_JAVA基础应用:日期时间选择控件(代码)
- jenkins发送allure测试报告附件
- linux 运行jar main,Maven打包生成jar包并在linux下启动main方法
- 查询oracle数据库的表格数据类型,excel表格中如何查询数据库数据类型-我想把excel表格中的数据导入oracle数据库中,想在......