我的項目需要動態分配內存。我究竟做錯了什麼?分配結構數組時遇到困難
/*Setting up my Struture*/
struct album_ {
int num_tracks;
struct tracks_ tracks;
int playlist_hits[];
};
typedef struct album_ album;
/*Try to allocate memory for structure*/
fscanf(album_file,"%d", &number_of_album);
album *all_albums_p = (album *)malloc(sizeof(album)*number_of_album);
for(i=0;i < number_of_album; i++){
all_albums_p[i].num_tracks = (int *)malloc(sizeof(int));
all_albums_p[i].num_tracks = i+1;
printf("%d\n",all_albums_p[i].num_tracks);
}
Error Message
warning: assignment makes integer from pointer without a cast [enabled by default]
此外,如果我想返回此數組是否正確return all_albums_p
?
如果我改變,我得到'functions.c:19:5:錯誤:無效使用靈活的陣列member' 的'functions.c:20:5:錯誤:使用無效靈活的數組成員' – 2012-03-31 12:46:25
@LearningC請參閱我最後的編輯。除非所有靈活數組的大小相同(並且看起來不像它們在您的示例中具有相同大小),否則您將無法在數組中使用靈活數組的結構。 – dasblinkenlight 2012-03-31 12:55:31
謝謝,我現在明白了。修復了這個問題。另一個問題是我試圖'返回all_albums_p;'但它也給了我這個錯誤'警告:返回使得指針沒有投射整數[默認啓用]' – 2012-03-31 13:06:36