理解指针 - c

时间:2013-01-27 20:51:34

标签: c pointers

  

可能重复:
  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>

2 个答案:

答案 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结构的所有字段在后一时间可被其他函数使用。