2015-12-05 112 views
-3

如何分配malloc以及結構陣列和結構陣列?在結構陣列中分配結構陣列

爲expample:

struct car_t{ 
int price; 
float kmsDriven; 
}; 

struct garage_t{ 
int locationX; 
int locationY; 
struct car_t * car; 
} 

有車庫的陣列,它們中的每個人都有汽車的數組。

回答

1

你將不得不使用一個循環:

#define N 42 
#define M 17 

struct garage_t *a = malloc(sizeof *a * N); 

for (int i = 0; i < N; i++) { 
    a[i].car = malloc(sizeof (*a[i].car) * M); 
} 
+0

'了''是結構garage_t *'和'A [1]''是結構garage_t'。所以,使用'a [i] .car'而不是'a [i] - > car'。 – MikeCAT

+0

@MikeCAT謝謝,修正 – ouah

1

只是像往常一樣分配,一個接一個。

int garage_num = 3, car_num = 5; 
int i; 
struct garage_t *garage; 
garage = malloc(sizeof(struct garage_t) * garage_num); 
for (i = 0; i < garage_num; i++) { 
    garage[i].car = malloc(sizeof(struct car_t) * car_num); 
} 

您應該檢查malloc() s是否成功實際使用。