最近在STM的GPIO结构体定义中看到源代码的时候,顺便复习下结构体指针变量的定义及typedef 的使用。
1.结构体类型定义
定义方式1:

Typedef struct LNode {
int data; // 数据域
struct LNode *next; // 指针域
} *LinkList;
定义方式2:

struct LNode {
int data; // 数据域
struct LNode *next; // 指针域

};
Typedef struct LNode *LinkList;
以上两个定义方式是等价的,是将 *LinkList 定 义为 struct LNode 类型,即 LinkList 被定义为一个类型名。这样就可以用 LinkList来定义说明新的变量了,如:

LinkList L;

结构体变量与结构体指针变量的使用方法
一、结构体的定义格式一般如下:

Typedef struct SCI

{

U8 data[MAXLEN];U16 pos;

}TSCI;

二、访问结构体成员的基本方法有两种:

1、定义一个结构体变量直接访问成员变量;

2、定义一个结构体指针变量间接访问结构体变量。

(1) 结构体变量访问

TSCI Sci1;

Sci1.data [ Sci1.pos++]= num;

(2) 结构体指针变量访问

TSCI *Sci2,b;

Sci2= &b; //指针变量必须初始化 指向一个结构体变量

Sci2->data[Sci2->pos++] = num;

(3)(*Sci1).data Sci2->data 效果等效

三、如何实现结构体被其他函数调用

假设A文件中定义了一个结构体,B文件可以对A中定义的结构体进行访问和修改数据。

1、 在A.h中定义结构体

Typedef struct SCI

{

U8 data[MAXLEN];

U16 pos;

}TSCI;

2、在A.c文件中声明一个结构体变量

TSCI Sci;

3、要实现B.c文件能够调用A中的结构体,需要做到两点:

(1)在B.h中包含A.h头文件;

(2)A.c中实现返回结构体变量地址的函数。

 实现函数如下:

TSCI * Get_Address(void) //返回结构体变量的地址 (此TSCI结构体须在A.h中定义)

{

Return &Sci;

}

(4)在B.c中定义一个结构体指针变量,通过调用Get_Address函数得到Sci的地址,将此地址赋给B.h中定义的结构体指针变量。

 TSCI *pSci2;pSci2 = Get_Address();pSci2->data[pSci2->pos++]=num;这样就可以实现对A.c中的结构体变量Sci的数据访问、修改。

结构体指针变量含义,结构体指针函数相关推荐

  1. 自己实现了一个C语言例程,加深对宏、大小端、typeof宏、offsetof宏、指针变量、结构体、联合体的理解

    如题所述,最近时间在复习C语言.自己实现了一个C语言例程,以加深对宏.大小端.typeof宏.offsetof宏.指针变量.结构体.联合体的理解.关于细分知识后续有空再填充- swap宏的使用: 对应 ...

  2. c语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数,C语言学习笔记结构体02结构体指针变量与结构体变量的函数参数.docx...

    C 语言学习笔记[结构体02]结构体指针变量与结构体变量 的函数参数 C 语言学习笔记之结构体指针变量一提指针,那可 是 C 语言的核心了,有多少学子曾拜倒在指针的脚下.单纯的说指针,其实并不难,但是 ...

  3. c语言指针变量字节,C语言指针变量类型和大小

    指针变量作为C语言中的特殊数据类型,除了用于存储内存地址之外,它与其他类型比较是否具有其他特点呢?接下来对指针类型进行分析,剖析指针类型的特点. 指针的大小与其指向的内存中存储的变量类型无关,它只与计 ...

  4. 能否把指针变量本身传递给一个函数?

    能否把指针变量本身传递给一个函数? 例: void fun(char *p)  {  char c = p[3]; //或者是char c = *(p+3); }  int main()  {  ch ...

  5. c语言的返回类型是指针变量吗,C语言-指针类型

    改值场景示例 - 改变 n 的值 的函数 void change(int n) { n = 10; } int main() { int a = 20; - 这里只能把 变量a 的值传到 change ...

  6. 引用指针变量p实现字符串连接函数strcat()的功能

    引用指针变量p实现字符串连接函数strcat()的功能 编写程序,通过指针变量p的引用,实现字符串连接函数strcat()的功能. #include <stdio.h>int main(i ...

  7. C++ 笔记(27)— 指针变量、数组和指针、指针数组、数组指针、指针常量与常量指针

    1. 什么是指针变量? 指针变量是专门有一个变量来存放指针. int main(int argc, char *argv[]) {int a = 10;int *p = &a; //通过取地址 ...

  8. c语言中字符指针变量输入,C语言指针基础知识实例讲解

    对程序进行编译的时候,系统会把变量分配在内存单位中,根据不同的变量类型,分配不同的字节大小.比如int整型变量分配4个字节,char字符型变量分配1个字节等等.被分配在内存的变量,可以通过地址去找到, ...

  9. c语言下标法改为指针变量法,C语言指针教学的改革探析.doc

    C语言指针教学的改革探析 C语言指针教学的改革探析 摘要:指针是C语言的精华,同时又是重难点.从内存的地址分配和存取原理方面深入分析了指针的概念和实质,并对容易发生的错误进行了分析和总结.将指针设置为 ...

最新文章

  1. 从白盒测试到单元测试基础原理
  2. GitHub现在已支持函数定义跳转,妈妈再也不怕我记性差了
  3. 鸿蒙51单片机,基于C51系列单片机的交通控制系统设计
  4. mysql timestamp 插入null报错_读MySQL 5.7文档11.2 Date and Time Data Types总结
  5. IOC控制反转(依赖注入思想)
  6. Delphi 的一些函数(Windows相关)
  7. 黄金分割法与单峰函数求极值
  8. 幼儿园管理云平台众多,只有一家与众不同
  9. 利用昆仑通态触摸屏实现数据采集和逻辑判断的例子
  10. python单因素方差分析_Python数据科学:方差分析
  11. 关于浏览器播放视频的些许理解
  12. pandas_计算年化收益率
  13. 无线路由器破解之cdlinux
  14. 如何用云服务器进行深度学习
  15. 用计算机处理机读卡上,改卷子和登分程序及其注意事项以及一些操作
  16. MySQL 空间分析函数
  17. 萌萌哒身高差(找规律)
  18. 12位早起的IT大佬们让小伙伴们都惊呆了
  19. 解决mendeley文献管理软件无法显示部分文献中文的办法
  20. 基于processing的交互动态绘画系统

热门文章

  1. 计算机考研807大学有哪些,2019年北京邮电大学807软件工程专业综合考研大纲
  2. Kubernetes----单节点部署(完)(详细过程~)
  3. Linux操作系统基础知识
  4. linux 文件系统自动安装ko,Linux文件系统安装模块化讲解
  5. 图灵奖得主Alan Kay谈面向对象和函数式编程
  6. winxp死亡倒计时,大家快安装使用汉澳sinox!
  7. GT高速串行接口使用记录
  8. 站长在线Python精讲:在Python中匹配字符串的3个方法详解
  9. Acro Multi-Language Suite多语言套件在www.evget.com上架
  10. 循环、递归与魔术(三)——再谈循环的魔术逻辑与欣赏