zoukankan      html  css  js  c++  java
  • 结构体指针变量的定义

    最近在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的数据访问、修改。

     
  • 相关阅读:
    用node.js解决编程题的输入问题
    css兼容篇
    关于Hogan的学习笔记
    javascript实现瀑布流
    代码管理工具之SVN简介
    原创•模板匹配实践之Opencv+Python识别PDB板图片
    sklearn 神经网络MLPclassifier参数详解
    (转)knn算法简单实例分享
    机器学习初识——KNN算法
    开发工具VScode实用插件推荐分享
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/9613424.html
Copyright © 2011-2022 走看看