IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 嵌入式C学习 2 -> 正文阅读

[C++知识库]嵌入式C学习 2


一、指针

指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器(CPU)中寄存器(Register)

指针的基本操作

定义指针 u8 *a;
写入数据 *a = 88;
移动指针 a=a+6;
数据调用 b=*a;

指针与数组的区别

指针、数组都是在RAM空间中占用内存,只是表达的方式不同指针更有灵活性,不固定空间大小,可以游走于更大的空间。数组需要事先固定一个空间区域,只能在区域内操作。

注意
这是相乘:a*b ;1 *b
这才是指针相加(乘):a+ * b ;a *(*b)

void OLED_DISPLAY_8x16_BUFFER(u8 row,u8 *str){   #定义*str指针
	u8 r=0;
	while(*str != '/0) {  #判断该地址的值不为空
	OLED_DISPLAY_8x16(row,r*8,*str++); #指针值向后移一位
	r++}
}

二、结构体指针

结构体
1、定义:将不同类型的数据存放在一起,作为一个整体进行处理
2、结构体声明:

struct student
{
int age;
char sex;
float score;
.
.
};//注意分号不能少,这也相当于一条语句;

调用后

int main ()
{
struct student a={ 18,'男',100}; //定义
printf("年龄:%d 性别:%c\n 分数:%.2f", a.age,a.sex,a.score);
return 0;

3、结构体指针
定义:

struct 结构体名  *结构指针名;

访问其中一个结构体元素的成员变量:

(*结构体指针名).成员名

三、宏定义#define

1、定义:指示编译器会将之后出现的所有标识符都替换为替换列表

2、类对象宏(无参宏):

#define 标识符 字符串

3、类函数宏(带参)

例如: #define A1(a,b) a+b

四、Typedef

1、定义:定义一种数据类型的别名,数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)
2、可给变量一个易记且意义明确的新名字,,也可简化一些比较复杂的类型声明

typedef void (*PFunCallBack)(char* pMsg, unsigned int nMsgLen);//声明引入了 PFunCallBack 类型作为函数指针的同义字,该函数有两个类型分别为 char* 和 unsigned int 参数,以及一个类型为 void 的返回值。

3、定义机器无关的类型,如定义一个叫 REAL 的浮点类型,在目标机器上它可以获得最高的精度

 typedef long double REAL; 

在不支持 long double 的机器上,则该 typedef 为

 typedef double REAL; 

在连 double 都不支持的机器上,该 typedef为

 typedef float REAL; 

五、条件编译

1、

以#开头的都是预编译指令,就是在正式编译之前,编译器做一些预处理的工作
#if 条件语句
程序段1 //如果条件语句成立,那么就编译程序段1
#endif
程序段2//如果条件不语句成立,那么就编译程序段2
#ifndef x//先测试x是否被宏定义过
#define 程序段1 //如果x没有被宏定义过,那么就编译程序段1
#endif
程序段2 //如果x已经定义过了则编译程序段2的语句,“忽视”程序段1。
#ifdef x //先测试x是否被宏定义过
程序段1 //如果x被宏定义过,那么就编译程序段1
#endif
程序段2 //如果x没有被定义过则编译程序段2的语句,“忽视”程序段1。
if就是判断语句,不是预编译指令

2、

常见的预处理指令如下:
#空指令,无任何效果
#include包含一个源代码文件
#define定义宏
#undef取消已定义的宏
#if如果给定条件为真,则编译下面代码
#ifdef如果宏已经定义,则编译下面代码
#ifndef如果宏没有定义,则编译下面代码
#elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码
#endif结束一个#if……#else条件编译块
#error停止编译并显示错误信息

六、内存操作

进程: 进程是占有资源的最小单位,这个资源当然包括内存。在现代操作系统中,每个进程所能访问的内存是互相独立的(一些交换区除外)。而进程中的线程可以共享进程所分配的内存空间。
在操作系统的角度来看,进程=程序+数据+PCB(进程控制块)

七、补充

const

1、定义const常量之后具有不可变性,const修饰的数据类型是指常类型,不可被更新
2、可以很方便地进行参数的调整和修改
3、与define定义不同,只是给出了对应的内存地址,而不是像define一样给出的是立即数,并没有放入放入ROM,不分配分配存储空间,是一个编译期间的常量,具有高效率。
在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-04 10:51:31  更:2022-02-04 10:53:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:46:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码