C语言结构体与指针移动

①假设

存在结构体

struct

{inta;char*s;}b,*p=b;

指针p指向结构体变量b,

变量b中包含两个成员,

整型成员a和指针成员b,

即指针可以指向结构体中的指针。

②指针指向结构体变量成员

~

++p-a等于++(p-a)等于++a

先->再++,

先访问a,再++,

不移动指针,变量增加,a增1。

(++p)-a

先++再-,

先++p,再访问a,

先移动指针p,p增1,再访问a。

~

(p++)-a等于p++-a

先->再++,

先访问a,再p++,

先访问a,再移动指针p,p增1。

③指针指向结构体指针成员

~

*p-s等于*s

先->再*,

先指向指针s,再转换为s所指变量,

访问指针s所指的变量。

*p-s++等于*(p-s)++等于*s++

先->再*,最后++,

先访问s所指的变量,再s++,

先访问s所指的变量,再移动指针,s增1

(*p-s)++等于(*s)++

先->再*,最后++,

先访问s所指的变量,再(*s)++,

先访问s所指的变量,再变量增加,*s增1

*p++-s等于*(p++)-s

先->再*,最后++,

先访问s所指的变量,再p++,

先访问s所指的变量,再移动指针,p增1




转载请注明:http://www.aierlanlan.com/rzfs/4424.html

  • 上一篇文章:
  •   
  • 下一篇文章: