我有一个关于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]
答案 0 :(得分:1)
正确的答案是
p->heapArray[i].dataArray[0]
因为当你在heapArray
指针上使用下标时,它就像做指针算法然后解除引用指针一样,就像这样
(*(p->heapArray + 1)).dataArray[0]
因此,当您取消引用它时,它的类型变为Heap
,这意味着它不是指针,必须使用.
而不是->
进行访问。
答案 1 :(得分:0)
p->heapArray[i]
属于Heap
类型,是一个结构,因此您使用.
。