C/C++教程

嵌入式c:指针

本文主要是介绍嵌入式c:指针,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

掌握:1)指针 2)结构体指针 3)宏定义 了解:Typedef、宏定义、条件编译、内存操作

c语言指针:

指针的基本操作:

定义指针 写入数据 移动指针 数据调用

指针、数组都是在RAM空间中占用内存,只是表达的方式不同;

指针更有灵活性,不固定空间大小,可以游走于更大的空间;

数组需要事先固定一个空间区域,只能在区域内操作。

注意:

*用于相乘运算,也用于指针

推荐视频(韩学姐):

【C指针】十分钟、你要是听不懂、我当场就把这个编译器......_哔哩哔哩_bilibili

是不是一直搞不懂C语言的指针,看完这个动画,你就全明白了_哔哩哔哩_bilibili

结构体指针:一个指针变量指向结构体

struct 结构体名 *变量名;

结构体变量名和数组名不同,数组名在表达式中会被转换为数组指针,而结构体变量名不会,无论在任何表达式中它表示的都是整个集合本身,要想取得结构体变量的地址,必须在前面加&。

//结构体
struct stu{
    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //所在小组
    float score;  //成绩
} stu1 = { "Tom", 12, 18, 'A', 136.5 };
//结构体指针
struct stu *pstu = &stu1;

通过结构体指针可以获取结构体成员:(*pointer).memberName或pointer->memberName

结构体变量名代表的是整个集合本身,作为函数参数时传递的整个集合,也就是所有成员

宏定义:预处理指令

无参宏定义:#define 标识符 替换列表,如#define pi 3.14

带参宏定义:#define 标识符(参数1,参数2,...,参数n) 替换列表,如#define MAX(a,b) ((a)>(b)?(a) : (b))

typedef:定义一种类型的新别名,不同于宏定义

typedef    (int*)      pINT; 与  #define    pINT2    int*   区别:

pINT a,b;

int *a; int *b;表示定义了两个整型指针变量      (typedef)

int *a, b;表示定义了一个整型指针变量a和整型变量b        (define)

条件编译

(1)#if 条件表达式
    程序段1
#else
    程序段2
#endif

(2)#ifndef 标识符
#define 标识符 替换列表
    //...
#endif

(3)#if 条件表达式1
    程序段 1
#elif 条件表达式2
    程序段 2
#else
    程序段3
#endif

(4)#ifdef 标识符
    程序段
#endif

内存操作函数:(40条消息) c语言内存操作函数汇总_pfgmylove的专栏-CSDN博客_内存操作函数

内存区域进行基于字节的工作

单片机的地址与状态

软件=地址+状态->硬件

GPIO接口:用于电信号在电路中的输入输出,以方便控制电路部件,通俗讲是芯片上的引脚

对于STM32103ZEF:共七组IO口,每组IO口有十六个IO,共112个IO口

GPIO基本结构图:

​​​​​​【洋桃电子】洋桃补习班(为0基础的初学者补足基础知识)STM32入门100步系列视频_哔哩哔哩_bilibili

这篇关于嵌入式c:指针的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!