【问题标题】:error: indirection requires pointer operand错误:间接需要指针操作数
【发布时间】:2015-06-02 13:55:24
【问题描述】:

我有以下函数,一个 initializeHeap 函数,它不接受任何参数并输出我定义的 Heap 结构。还有一个 insertNode 函数,它接收指向堆结构的指针和要添加到堆中的数字。我在主函数中这样称呼它们:

h = initializeHeap();
Heap *p = *h;
insertNode(p,5);
insertNode(p,7);
insertNode(p,3);
insertNode(p,2);

尝试执行此操作时出现此错误:

error: indirection requires pointer operand

有什么想法吗?如果需要,我可以发布更多代码。

struct Heap和函数initializeHeap()如下:

typedef struct node{
    int data;
}Node;

typedef struct heap{
    int size;
    Node *dataArray;
}Heap;

Heap initializeHeap(){
    Heap heap;
    heap.size = 0;
    return heap;
}

【问题讨论】:

  • initializeHeap的声明是什么?更具体地说,它声明返回什么?
  • 请问h 是如何定义的?
  • 一个不相关的提示:如果你有一个包含指针的结构,那么将指针初始化为NULL 通常是个好主意。

标签: c pointers


【解决方案1】:

变化:

Heap *p = *h;

Heap *p = &h;

h 是一个Heap 结构对象,使用& 运算符获取指向结构对象的指针。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-31
    • 2014-06-30
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 2010-10-28
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多