構造体のポインタの配列をどのように初期化したら良いですか?
C言語において、構造体ポインタの配列は次の方法で初期化できます
- 1つずつ初期化:各要素を1つずつ指定して代入する方法。例えば、
struct Person {
char name[20];
int age;
};
struct Person *people[3];
people[0] = malloc(sizeof(struct Person));
strcpy(people[0]->name, "Tom");
people[0]->age = 20;
people[1] = malloc(sizeof(struct Person));
strcpy(people[1]->name, "Jerry");
people[1]->age = 25;
people[2] = malloc(sizeof(struct Person));
strcpy(people[2]->name, "Alice");
people[2]->age = 30;
- 静的な初期化を利用する:静的メソッドを通じて各要素を初期化する。例えば:
struct Person {
char name[20];
int age;
};
struct Person *people[3] = {
&(struct Person){"Tom", 20},
&(struct Person){"Jerry", 25},
&(struct Person){"Alice", 30}
};
- 繰り返しで初期化:ループを用いて各要素に値を割り当てます。例:
struct Person {
char name[20];
int age;
};
struct Person *people[3];
char names[3][20] = {"Tom", "Jerry", "Alice"};
int ages[3] = {20, 25, 30};
for (int i = 0; i < 3; i++) {
people[i] = malloc(sizeof(struct Person));
strcpy(people[i]->name, names[i]);
people[i]->age = ages[i];
}
構造体のポインタ配列を使用した後は、メモリを手動で解放する必要があります。