C数据结构,变量

问题描述 投票:0回答:1

对不起菜鸟问题

我有一个结构:

typedef struct  s_test
{
    int         head;
    char        *end;
}               t_test;

我的代码:

int main()
{
   t_test a;
   t_test *b;
}

a.headb->head有什么区别?为什么不能输入a->headb.head?我知道b是一个指针,其中保存着一个变量类型t_test的地址。

c pointers variables structure
1个回答
0
投票

b->head只是做(*b).head的方便语法糖。

您必须先取消引用结构的指针,然后才能在其上使用点符号,这就是为什么您无法执行b.head

无法执行a->head的原因是a不是指针,因此无法取消引用。解引用运算符*仅对指针有意义。

© www.soinside.com 2019 - 2024. All rights reserved.