我正在尝试创建一个名为Record的结构数组。为此,我使用了以下代码:
typedef struct{
int studentID;
char studentName[20];
}STUDENT;
typedef struct{
STUDENT item;
struct RECORD *link;
}RECORD;
void initializeTable(RECORD *, int);
int main(){
int i;
int m;
RECORD *hashTable;
printf("Table Size: "); scanf("%d", &m);
initializeTable(hashTable, m);
}
void initializeTable(RECORD *hashTable, int m){
int i;
hashTable = (RECORD *)malloc(m * sizeof(RECORD));
for(i=0; i<m; i++){
hashTable[i] = NULL;
}
}
我收到了这个错误:
incompatible types when assigning to type ‘RECORD {aka struct <anonymous>}’ from type ‘void *’
hashTable[i] = NULL;
我在哪里做错了?
答案 0 :(得分:2)
在此typedef声明中
typedef struct{
STUDENT item;
struct RECORD *link;
}RECORD;
声明有两种类型。第一个是typedef名称为RECORD
的类型。第二个是在类型struct RECORD
内声明的不完整类型RECORD
。它们是两种不同的类型。
例如,你应该声明像
这样的结构typedef struct RECORD{
STUDENT item;
struct RECORD *link;
}RECORD;
也是这个循环
hashTable = (RECORD *)malloc(m * sizeof(RECORD));
for(i=0; i<m; i++){
hashTable[i] = NULL;
}
没有意义,因为表达式hashTable[i]
不是指针而是RECORD
类型的对象。