2012-04-02 20 views
2

也会p = (users *)malloc(sizeof(users));为播放列表结构创建内存吗?另外我如何使用p引用playlist.album?这是malloc第二个结构吗?

struct playlist_ { 
    int album; 
    int track_num; 
    struct playlist_ *next; 
}; 

struct users_ { 
    int user_ID; 
    struct playlist_ playlist; 
    struct users_ *next; 
}; 

typedef struct playlist_ playlists; 
typedef struct users_ users; 

users *p; 
p = (users *)malloc(sizeof(users)); 
+0

http://stackoverflow.com/questions/4982339/malloc-of-struct-array-with-varying-size-structs 不是你的问题,但有一些很好的例子。 – 2012-04-02 20:04:00

回答

5

p = (users *)malloc(sizeof(users));创建播放列表结构的内存呢?

playlistusers_的成员,因此它构成了分配空间的一部分。所以要回答你的问题:是的。

[顺便说一句,你不需要(也不应该)投malloc结果]

而且如何使用对我引用playlist.album?

取决于您所指的“参考”。假设你只是指“访问”,那么这个:

p->playlist.album 
+0

非常感谢您的解释。 – 2012-04-02 20:23:06

0

是的,它会的。 struct users_包含实例struct playlist_,因此为前者分配内存也将为后者留出空间。

在另一方面,如果struct users_含有指针struct playlist_你不得不为前分配内存后为后者分配内存。

要引用playlist.album使用p->playlist.album