赋值使得Integer中的指针没有Cast in Structure

时间:2014-02-10 07:15:03

标签: c list pointers dynamic struct

我正在创建一个动态创建整数列表的程序。

int ins_dlist(int data, struct dlist **p){
struct dlist *q;

if((*p)->sz == (*p)->maxsz){
    q = realloc(*p, DLISTSZ((*p)->maxsz + INCRSZ));
    if(q == NULL)
        return (-1);
    q->maxsz += INCRSZ;
    *p = q;
}

//(*p)->item[(*p)->sz++] = data; <-Gives me pointer from integer without cast
*((*p)->item + (*p)->sz++) = data;
return(0);

}

我的问题出在*((*p)->item + (*p)->sz++) = data;我尝试以不同的方式声明它,但我仍然无法访问我的struct中的sz变量。 继承我的结构声明,它在一个名为dlist.h的文件中:

#include <stdlib.h>
struct dlist{
     int sz;
    int maxsz;
    int *item[1];
};

#define INITSZ 5
#define INCRSZ 5
#define DLISTSZ(n) ((size_t)(sizeof(struct dlist)) + ((n-1)*sizeof(int)))

struct dlist *init_dlist(int num);
int ins_dlist(int data, struct dlist **p);

1 个答案:

答案 0 :(得分:1)

您可能希望将dllist定义为:

struct dlist{
   int sz;
   int maxsz;
   int item[1];
};