理解指针-c

理解指针-c,c,pointers,C,Pointers,可能重复: 我真的不熟悉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; }

可能重复:

我真的不熟悉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”?

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

q->first是*q first的缩写 括号是必需的,因为。将在解引用*之前进行计算,并且由于q是指针,因此q.first==不是有效的东西

队列aQ; 初始化队列&aQ

函数init_queue接受指向队列的指针,而不是指向int的指针。
此函数的作用是初始化结构的所有字段,以便以后其他函数使用

*q->first甚至不是有效代码。你能更好地解释你的问题吗?是什么阻止了你得到一本关于C的教科书并花费一些时间学习基础知识。我无法想象这不会在任何地方详细说明。抱歉,但我不明白的是,如果a接受一个“int”I,我将它传递到init_队列&I,*I.first将等同于设置一个“typedef struct”的值,并为I分配一个值,不是吗?