C结构中的箭头与点对比?

时间:2015-03-28 22:33:12

标签: c struct

我有一个关于C中结构的箭头与点符号的具体问题。我理解 - >用于结构指针,和。用于对象,但是我在解析我在网上发现的一些代码时遇到了一些麻烦。

    typedef struct node{
        int data;
    }Node;

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

    typedef struct plan{
        int maxPile;
        Heap *heapArray;
    }Plan;

鉴于此代码,如果我创建:

    Plan *p

然后我想访问计划I中的heapArray中的特定索引:

    p->heapArray[i]

从这里开始,如果我想访问struct heap中dataArray的大小,我会使用' - >'吗?还是'。'?

因此,如果我想获取该堆的数据数组的第一个元素,我会这样做:

    p->heapArray[i].dataArray[0]

    p->heapArray[i]->dataArray[0]

2 个答案:

答案 0 :(得分:1)

正确的答案是

p->heapArray[i].dataArray[0]

因为当你在heapArray指针上使用下标时,它就像做指针算法然后解除引用指针一样,就像这样

(*(p->heapArray + 1)).dataArray[0]

因此,当您取消引用它时,它的类型变为Heap,这意味着它不是指针,必须使用.而不是->进行访问。

答案 1 :(得分:0)

p->heapArray[i]属于Heap类型,是一个结构,因此您使用.