制作包含结构的数组 - C.

时间:2014-03-10 22:55:53

标签: c arrays struct compiler-errors

今天我正在尝试实现一个队列,但是一个与数组中的结构一起工作的队列(我总是讨厌C'结构数组的术语,因为我不想这样做)。但是,当我尝试进行基本初始化时,我会遇到如下编译错误。

  

“请求成员' * *',而不是结构或联合。”

这是我的代码,现在不多了。

//------------------------Preprocessor Instructions. ------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>

#define MAX 128
#define BUFFER 120


//-------------------------Global Stuff -------------------------------------------------
int head=-1;
int tail=-1;    //Starting head and tail at -1. 

struct Entry{
    int Data;
    int Hops;   
}; 
struct Entry Queue[MAX];    //Queue made up of structs.

int visited[MAX];


//------------------------Function Definitions. -----------------------------------------
int QueuePush(struct Entry *q, int num);
int QueuePop(struct Entry *q);
int IsEmpty(struct Entry *q);


//------------------------Main. ---------------------------------------------------------
int main(void)
{
    int i;

    while(i<MAX){
        Queue.Data[i]=0;
        Queue.Hops[i]=0;
        i++;
    }

    for(i=0;i<=10;i++){
        printf("Queue Data[%d] = %d \n", i, Queue[i].Data);
        printf("Queue Hops = %d \n", Queue[i].Hops);
    }


}

我在定义数组的过程中是否犯了一些可怕的大错误?或者问题是语法问题?提前致谢。

3 个答案:

答案 0 :(得分:4)

你应该写

Queue[i].Data = 0;
Queue[i].Hops = 0;

Queue.Data[i] = 0;
Queue.Hops[i] = 0;

答案 1 :(得分:3)

在初始化while循环中,您已编写Queue.Data[i]而不是Queue[i].Data

答案 2 :(得分:2)

另一件事:

int i;

while(i<MAX){
    Queue.Data[i]=0;
    Queue.Hops[i]=0;
    i++;
}

此处i包含随机数,此循环不起作用,因此您应该编写int i = 0;或使用for代替while