p = (users *)malloc(sizeof(users));
也会为播放列表结构创建内存吗?此外,我如何使用p引用播放列表.album?
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));
p = (users *)malloc(sizeof(users));
也会为播放列表结构创建内存吗?
playlist
是users_
的成员,因此它构成了分配空间的一部分。所以回答你的问题:是的。
[顺便说一句,你不需要(也不应该)投射malloc
的结果。]
此外,我如何使用p引用播放列表.album?
取决于你所说的"参考"是什么意思。假设你的意思只是"访问",那么这个:
p->playlist.album
struct users_
包含struct playlist_
的实例,因此为前者分配内存也将为后者保留空间。
另一方面,如果struct users_
包含指向struct playlist_
的指针,则在为前者分配内存之后,必须为后者分配内存。
要参考playlist.album
,请使用p->playlist.album