【问题标题】:C data structure, variablesC 数据结构,变量
【发布时间】:2020-01-09 17:05:11
【问题描述】:

对不起,菜鸟问题

我有一个结构:

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 的地址。

【问题讨论】:

  • -> 取消引用左侧的指针,然后将偏移量添加到右侧的成员。
  • 您不能键入a->head,因为a 不是指针。而且你不能输入b.head,因为b不代表结构。

标签: c pointers variables structure


【解决方案1】:

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

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

你不能做a->head的原因是a不是一个指针,所以它不能被取消引用。解引用运算符* 仅对指针有意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多