可能重复:
What are the barriers to understanding pointers and what can be done to overcome them?
我对c和指针真的不熟悉,我想了解这里发生了什么:
typedef struct {
int q[QUEUESIZE+1];
int first;
int last;
int count;
} queue;
init_queue(queue *q)
{
q->first = 0;
q->last = QUEUESIZE-1;
q->count = 0;
}
认为这是正确的:q-&gt; first = 0意味着如果为'0'地址分配某个值'val',那么*(q-&gt; first)将返回'val'?< / p>
答案 0 :(得分:3)
没有。 q-&gt; first = 0将0分配给队列的第一个属性。 q是一个指针,但q-&gt; first是一个int。
答案 1 :(得分:1)
q->first
是(*q).first
的简写
括号是必要的,因为.
将在dereference *
之前进行评估,因为q
是指针q.first == NOT A VALID THING
queue aQ;
init_queue(&aQ);
函数init_queue
获取指向queue
的指针,而不是指向int
的指针。
该函数的作用是initialize
结构的所有字段在后一时间可被其他函数使用。