【问题标题】:initialising a Queue which has a struct [closed]初始化具有结构的队列 [关闭]
【发布时间】:2015-09-20 05:03:19
【问题描述】:

错误 - 无效的参数类型(错误的位置在我初始化队列的主函数中。) 我声明了一个 Queue 结构,它具有另一个结构(称为)Dataitem 的 2 个指针。

    // list dataitem declaration
       struct dataitem{
       Cake cake;
       struct dataitem *next;
        };

       typedef struct dataitem Dataitem;
       typedef Dataitem *DataitemPtr;

      // Queue declaration
      struct queue{
      int countQ;
      Dataitem *headPtr;
      Dataitem * tailPtr;
      };
      typedef struct queue Queue;

我在main函数中初始化Queue如下。错误在这里被捕获。请问为什么会出现这个错误?

      Queue q;
      q->headPtr=q->tailPtr = NULL;
      q.countQ=0;

【问题讨论】:

    标签: c struct queue


    【解决方案1】:

    您使用了错误的语法。使用. 而不是->

      q.headPtr = q.tailPtr = NULL;
    

    要访问对象的成员,您需要使用. 运算符。 headPtr 是一个指针这一事实并不意味着您需要使用-> 运算符来访问q 的成员。您将需要使用-> 运算符来访问q.headPtr 的成员。

     q.headPtr->next = NULL;
    

    【讨论】:

    • 但是 headPtr 和 tailPtr 是指针,C 说用 -> 初始化指针。
    • 现在出现运行时错误。它无法编译。
    • 不编译和不运行是两个不同的东西。
    • 我制作的代码没有错误,但 :makefile.win" 他们显示错误。我正在使用 dev C++ 运行我的 c 代码。
    • 错误是否与我建议的更改有关?其他地方?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多