Tôi đang gặp sự cố nhỏ khi cố gắng tạo cấu trúc này. Đây là mã cho cấu trúc:Lỗi: Chuyển đổi sang loại vô hướng được yêu cầu
typedef struct stats {
int strength;
int wisdom;
int agility;
} stats;
typedef struct inventory {
int n_items;
char **wepons;
char **armor;
char **potions;
char **special;
} inventory;
typedef struct rooms {
int n_monsters;
int visited;
struct rooms *nentry;
struct rooms *sentry;
struct rooms *wentry;
struct rooms *eentry;
struct monster *monsters;
} rooms;
typedef struct monster {
int difficulty;
char *name;
char *type;
int hp;
} monster;
typedef struct dungeon {
char *name;
int n_rooms;
rooms *rm;
} dungeon;
typedef struct player {
int maxhealth;
int curhealth;
int mana;
char *class;
char *condition;
stats stats;
rooms c_room;
} player;
typedef struct game_structure {
player p1;
dungeon d;
} game_structure;
Và đây là đoạn code tôi đang gặp một vấn đề với:
dungeon d1 = (dungeon) malloc(sizeof(dungeon));
Nó mang lại cho tôi những lỗi "error: chuyển đổi sang loại không vô hướng yêu cầu " Ai đó có thể giúp tôi hiểu tại sao điều này không?
vấn đề là gì nếu bạn truyền giá trị trả lại của malloc()? –
@PriteshAcharya, có lẽ không nhiều với các trình biên dịch hiện đại. Điều đó nói rằng, nó không thành ngữ. Đọc [câu hỏi này và câu trả lời của nó] (http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) cho nhiều cuộc thảo luận chi tiết. –
'struct student_simple { \t int rollno; \t char * name; }; ' Sự khác nhau giữa 'struct student_simple * s2 = malloc (sizeof (struct student_simple *)); struct student_simple * s3 = malloc (sizeof (struct student_simple)); ' Tôi có thể sử dụng cả s2 và s3 mà không gặp vấn đề gì nhưng khi kiểm tra kích thước trong gdb gdb $ 'p sizeof (struct student_simple)' cho 16 gdb $ 'p sizeof (struct student_simple *)' cung cấp cho 8 cách một khối 8 byte lưu trữ cấu trúc student_simple.? –