我有一个关于 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
然后我想访问 Plan 中 heapArray 中的特定索引,我会这样做:
p->heapArray[i]
从这里开始,如果我想访问结构堆中 dataArray 的大小,我会使用“->”还是“.”?
因此,如果我想获取该堆数据数组的第一个元素,我会这样做:
p->heapArray[i].dataArray[0]
或
p->heapArray[i]->dataArray[0]
最佳答案
正确答案是
p->heapArray[i].dataArray[0]
因为当你在 heapArray
指针上使用下标时,就像做指针算术然后取消引用指针,就像这样
(*(p->heapArray + 1)).dataArray[0]
因此,当您取消引用它时,它的类型变为 Heap
,这意味着它不是指针,必须使用 访问。
而不是 ->
。
关于c - C 结构中的箭头与点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29323386/