我可以使用&(* struct) - > name但不能使用struct-> name,当它们的意思相同时?

时间:2014-08-24 14:02:22

标签: c struct

  

感谢所有的帮助,我只是让操作顺序错误而且我忘记了我不需要&在指针之前,因为这是自动完成的。我的目标是找到比使用&(* head)更短的方式,我认为只有头部可能以某种方式做到这一点,因为我使用调试器感到困惑。

只是一个简单的问题,没什么大不了的。

这是我工作状态下的问题:

void getInput_stock(stock **head, char fgr, char bgr)
{
    scanStr(&(*head)->name, 60);
}

这就是scanStr的样子:

int scanStr(char *input, int limit);

我一直在处理结构,但他们仍然困惑我。我在scanStr(&(*head)->name, 60);处创建了断点,并检查了变量&(*head)head,它们都返回了相同的地址。但是当我尝试使用scanStr(head->name, 60);而不是帖子顶部给出的示例时,我收到错误left of '->name' must point to struct/union。我相信它是一个指向结构的指针。为什么我收到此错误?我的意思是&(*var)var不相同?

struct stockNode {
    int ID;
    int price[2];
    int qty;
    int date[3];
    unsigned int number[2];
    char name[60];
    char nameProv[60];
    char town[14];
    char street[30];
    struct stockNode *next;
};
typedef struct stockNode stock;

1 个答案:

答案 0 :(得分:0)

由于namestock结构的成员 - 当变量是指向结构的指针时,访问其中一个成员只是使用->运算符。

在您的使用中

void getInput_stock(stock **head, char fgr, char bgr)
{
    scanStr(&(*head)->name, 60);
}

head是指向stock指针的指针 - 这意味着对它的第一次引用(*head)成为指向stock的指针,因此访问其成员需要简单-> 1}}运营商使用。

你的功能应该是

void getInput_stock(stock **head, char fgr, char bgr)
{
    scanStr((*head)->name, 60);
}