指向结构的指针

bla*_*oth 1 c queue struct pointers

typedef struct queue {

  int q[max];
  int qhead;
  int qrear;

} queue;


void init_queue(queue *QUEUE)
{
  QUEUE.qhead = 0;
  QUEUE.qrear = -1;
}
void enqueue(queue *QUEUE,int data)
{
  QUEUE.qrear++;
  QUEUE.q[QUEUE.qrear] = data;
}

int process_queue(queue *QUEUE)
{
  if(QUEUE.qhead > QUEUE.qrear) 
    return -1;
  else
    return QUEUE.q[QUEUE.qhead++];
}
Run Code Online (Sandbox Code Playgroud)

我正在使用数组实现队列只是为了保持简单.用上面的代码搞错了?

Cla*_*diu 5

首先,.运算符用于访问结构的成员.您需要->访问指向结构的指针的成员:

void init_queue(queue *QUEUE)
{
  QUEUE->qhead = 0;
  QUEUE->qrear = -1;
}
Run Code Online (Sandbox Code Playgroud)

就像一个tid位,a->b相当于(*a).b- 也就是说,首先取消引用指针a,然后访问该结构的成员.