小米科技|C语言-结构体与指针移动

小米科技|C语言-结构体与指针移动


①假设
存在结构体
struct
{int a;char *s;b*p=&b;
指针p指向结构体变量b ,
变量b中包含两个成员 ,
整型成员a和指针成员b ,
即指针可以指向结构体中的指针 。

②指针指向结构体变量成员
~
++p->a等于++(p->a)等于++a
先->再++ ,
先访问a , 再++ ,
不移动指针 , 变量增加 , a增1 。

【小米科技|C语言-结构体与指针移动】(++p)->a
先++再-> ,
先++p , 再访问a ,
先移动指针p , p增1 , 再访问a 。
~
(p++)->a等于p++->a
先->再++ ,
先访问a , 再p++ ,
先访问a , 再移动指针p , p1 。

③指针指向结构体指针成员
~
*p->s等于*s
先->再* ,
先指向指针s , 再转换为s所指变量 ,
访问指针s所指的变量 。

*p->s++等于*(p->s)++等于*s++
先->再* , 最后++ ,
先访问s所指的变量 , 再s++ ,
先访问s所指的变量 , 再移动指针 , s1

(*p->s)++等于(*s)++
先->再* , 最后++ ,
先访问s所指的变量 , 再(*s)++ ,
访问s所指的变量 , 再变量增加 , *s增1

*p++->s等于*(p++)->s
先->再* , 最后++ ,
先访问s所指的变量 , 再p++ ,
先访问s所指的变量 , 再移动指针 , p1