结构体指针变量含义,结构体指针函数

最近在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的数据访问、修改。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值