"浅析" /> "浅析" />

[C]成员运算符"."和间接成员运算符"->"浅析

成员运算符: .

成员运算符一般和结构或者联合名一起使用,指定结构或者联合中的某个成员。

举个栗子:

如果Ronz是一个结构的名称,linux是这个结构模板指定的一个成员名。

1 struct{                 //匿名结构
2   int linux;
3   char windows[MAX];    //假设MAX已被定义 #define MAX 10
4 }Ronz;
1 struct{ //匿名结构 2 int linux; 3 char windows[MAX]; //假设MAX已被定义 #define MAX 10 4 }Ronz;

如果我想要标识结构模板中的成员linux。我就可以这样用:Ronz.linux。

如果我觉得它可怜,想给它一个值的话:Ronz.linux=7。

可是我觉得标识linux还是不够爽,还有windows在等着我呢,所以我还可以这么来:Ronz.windows。

总之,需要用到哪个就可以通过成员运算符"."标识哪个。

间接成员运算符:->

间接成员运算符和指向结构或者联合的指针一起使用,标识结构或者联合中的某个成员。

再次举个栗子:

如果ptd是指向结构的指针,linux是这个结构模板指定的一个成员,Ronz依然死皮赖脸地做结构的名称。

1  struct {                //匿名结构
2    int linux;
3    char windows[MAX];  //假设MAX已经被定义 #define MAX 10
4  }Ronz,*ptd;
5  ptd=&Ronz;
1 struct { //匿名结构 2 int linux; 3 char windows[MAX]; //假设MAX已经被定义 #define MAX 10 4 }Ronz,*ptd; 5 ptd=&Ronz;

这一次我又想标识linux,但是总请Ronz老人家出山也不好意思,于是还可以这么来:ptd->linux。

好歹给人家一个值吧:ptd->linux=7(当然可以直接赋值)。

ptd->linux  Ronz.linux  (*ptd).linux  //三个等效
小知识:"."优先级高于"*"
ptd->linux Ronz.linux (*ptd).linux  //三个等效 小知识:"."优先级高于"*"
成员运算符: . 成员运算符一般和结构或者联合名一起使用,指定结构或者联合中的某个成员。 举个栗子: 如果Ronz是一个结构的名称,linux是这个结构模板指定的一个成员名。 1 struct{ //匿名结构 2 int linux; 3 char windows[MAX]; //假设MAX已被定义 #define MAX 10 4 }Ronz; 如果我想要标识结构模板中的成员linux。我就可以这样用:Ronz.linux。 如果我觉得它可怜,想给它一个值的话:Ronz.linux=7。 可是我觉得标识linux还是不够爽,还有windows在等着我呢,所以我还可以这么来:Ronz.windows。 总之,需要用到哪个就可以通过成员运算符"."标识哪个。 间接成员运算符:-> 间接成员运算符和指向结构或者联合的指针一起使用,标识结构或者联合中的某个成员。 再次举个栗子: 如果ptd是指向结构的指针,linux是这个结构模板指定的一个成员,Ronz依然死皮赖脸地做结构的名称。 1 struct { //匿名结构 2 int linux; 3 char windows[MAX]; //假设MAX已经被定义 #define MAX 10 4 }Ronz,*ptd; 5 ptd=&Ronz; 这一次我又想标识linux,但是总请Ronz老人家出山也不好意思,于是还可以这么来:ptd->linux。 好歹给人家一个值吧:ptd->linux=7(当然可以直接赋值)。 ptd->linux Ronz.linux (*ptd).linux  //三个等效 小知识:"."优先级高于"*"
经验分享 程序员 微信小程序 职场和发展