C语言中struct 结构体 成员的访问问题?

像一个这样的结构体:
typedef struct {
void *OSAddr;
void *OSFreeList;
INT32U OSBlkSize;
INT32U OSNBlks;
INT32U OSNFree;
INT32U OSNUsed;
} OS_MEM_DATA;

访问(使用)的时候 看到有两种写法
一个是x=a.b ; // 中间是点
一个是x=a->b; // ->运算符
有时候 也是随便用 有时候靠编译器报错 来更正 想弄清楚

Q 想问的是 :这两种运算符 · 和-> 有啥区别
ps: 因为百度搜不了 这两个符号
最新回答
冷月如霜

2024-05-23 06:49:33

这主要得看a是什么类型,如果a是结构体变量(比如OS_MEM_DATA a),那么就是a.b。
如果是结构体指针变量(如OS_MEM_DATA *a),那么就是a->b。
a->b等价于(*a).b。
◇丶素小乐

2024-05-23 00:41:14

a.b —— a是结构体变量名
a->b—— a是指向结构体变量的指针
残存的回音

2024-05-23 06:02:26

指针就用-> 非指针就用.

例子:
OS_MEM_DATA *s;//这里需要给s明确的指向
s->。。。。。

OS_MEM_DATA s;