从不兼容的指针类型struct c分配

时间:2017-02-26 12:46:22

标签: c struct compiler-warnings

我正在学习C语言中的结构和指针。我尝试使用节点表来创建散列函数。我还在收到警告。我在寻找答案,但我找不到。

主:

int *T[N];
inittab(T);
chhinsert(T,206);

结构:

typedef struct{
  int key;
  struct node *next;    
}node;

功能:

void chhinsert(int **T,int k){
  node *x=NULL;
  x=(node*)malloc(sizeof(node));
  x->next=NULL;
  x->key=k;
  int p=h(k);
  //two lines below generates warning: assignment from incompatible pointer type
  x->next=T[p];
  T[p]=x;
}

我也试过

typedef struct node{...}node;

然后

void chhinsert(int **T,int k){
     struct node *x=NULL;
     x=(node*)malloc(sizeof(node));
     x->next=NULL;
     x->key=k;
     int p=h(k);
     x->next=T[p];
     T[p]=x;
}

每次我将x分配给表中的值,反之亦然警告显示

1 个答案:

答案 0 :(得分:0)

在行void chhinsert(int **T,int k)中,您将T声明为指向int的指针,而不是指向node的指针。将您的声明更改为void chhinsert(struct node **T,int k)