-3

可能重复:
理解指针的障碍是什么,可以做些什么来克服它们?

我对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->first = 0 意味着如果一个分配给 '0' 地址某个值 'val',那么 *(q->first) 将返回 'val' ?

4

2 回答 2

3

没有。 q->first = 0 将 0 分配给队列的属性 first。q 是一个指针,但 q->first 是一个 int。

于 2013-01-27T20:53:19.617 回答
1

q->first(*q).first
The parenthesis are necessary 因为.会在 the 之前进行评估dereference *,因为q是一个很好的指针q.first == NOT A VALID THING


queue aQ;
init_queue(&aQ);

该函数init_queue采用指向 a 的指针,queue而不是指向 a 的指针int
该功能的作用是initialize使结构的所有领域以后都可以被其他功能使用。

于 2013-01-27T20:55:38.520 回答