2014-02-10 69 views
0

我在做一個動態創建整數列表的程序。賦值使整數的指針沒有在結構中投射

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;我嘗試用不同的方式宣佈,但我還是不能讓我的結構進入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

檢查您的'結構dlist'聲明或張貼在這裏。 – Marian

+0

我在一個名爲dlist.h的文件中聲明瞭它,編輯了我的文章 – HighMrSai

回答

1

你可能想定義dllist爲:

struct dlist{ 
    int sz; 
    int maxsz; 
    int item[1]; 
}; 
相關問題