最近在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. 结构体指针变量含义,结构体指针函数

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

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

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

  3. 关于c/c++里面结构体指针变量的申请空间问题。

    这个问题是我在2020年刚开始学数据结构链表那一章遇到的,当时应该也没完全理解透彻,然后最近又遇到了,重新了解了一下.感觉网上许多人说的也未必正确,所以跟大家讲讲我的看法. 先得有两个知识前提: 1. ...

  4. 结构体指针和结构体指针变量的区别

    文章目录 前言 一.普通结构体变量 二.结构体指针变量 三.结构体指针 完整代码如下: 前言 结构体变量主要有三种应用场景:1.普通结构体变量:2.结构体指针变量:3.结构体指针. 一.普通结构体变量 ...

  5. c语言结构内部定义指针,C语言知识补漏(一)结构体指针以及位域定义

    一.结构体指针 typedef struct { unsigned long int DATA; unsigned long int DIRECTION; unsigned long int INTE ...

  6. c语言 返回函数是结构体指针变量,一个函数返回值为指向结构体的指针的问题...

    一个函数返回值为指向结构体的指针的问题 #include #include struct student { int num; char name[10]; struct student *next; ...

  7. C语言中结构体指针出现重定义,C语言结构体指针中包含结构体指针

    码农公社  210.net.cn  210是何含义?10月24日是程序员节,1024 =210.210既 210 之意. 将C++代码转化为C的过程中,一些C++的特性无法使用 类内私有变量在类内公共 ...

  8. 结构体变量和结构体指针变量作为函数参数传递问题

    字符串赋值:strcpy_s(pstu->name, "张三"); 需要引入头文件:#include <string.h> #include <stdio. ...

  9. c语言如何将值赋给结构体指针,C语言给结构体指针赋值

    <C语言给结构体指针赋值>由会员分享,可在线阅读,更多相关<C语言给结构体指针赋值(6页珍藏版)>请在人人文库网上搜索. 1.指向结构体的指针 在C语言中几乎可以创建指向任何类 ...

最新文章

  1. 堆排序算法实现思想个人理解
  2. 用Docker搭建Nexus私服
  3. int.TryParse非预期执行引发的思考 ASP.NET -- WebForm -- 给图片添加水印标记 Windows -- 使用批处理文件.bat删除旧文件...
  4. MySQL中有exists关键字吗_Mysql中EXISTS关键字用法、总结
  5. mysql从5.1.63升级到5.6.20出现的问题
  6. 蓝桥杯 ALGO-11算法训练 瓷砖铺放(递归/动态规划)
  7. WebDriverAgent安装
  8. WebConfig配置文件详解
  9. Android 联系人信息的获取
  10. myeclipse 8.5安装freemarker插件方法
  11. Iaas,paas,saas区别与联系
  12. Linux系统的镜像文件iso下载地址
  13. Centos7 tomcat优化
  14. 算法入门基础知识总结
  15. 利用ADB命令强制卸载oppo自带浏览器
  16. SuperSocket服务器架设(一):认识SuperSocket
  17. 上传图片时出现http 415错误
  18. 禁用Google英文翻译功能
  19. R语言作业一:矩估计、极大似然估计、拟合、对数正态分布、泊松分布、负二项分布
  20. win10的0x0000225及0x000007b修复方法

热门文章

  1. 我国关键信息基础设施安全保护白皮书
  2. Intellij IDEA如何添加注释并且修改注释样式
  3. 《鱿鱼游戏》的深刻,在于足够肤浅
  4. “读芯术”精华文章汇总:前程规划
  5. 股票预测论文精读:Astock: a new dataset automated stock trading based on stock-specific news analyzing mod
  6. h5微信js-sdk分享接口php,H5 微信JSSDK自定义分享代码模板
  7. mac系统启动spring项目报错
  8. monaco-editor(code编辑器插件)使用及常用配置与方法
  9. C# DES加密解密算法
  10. 滑坡的剖面图怎么用计算机绘制,利用AutoCAD绘制地质图的若干方法