single
ネストされた構造体
メニューを表示するにはスワイプしてください
C では、構造体は int や char などの基本型、配列、ポインタに加えて、他の構造体をメンバーとして含めることができます。ネストされた構造体は、関連するデータを論理的にまとめたい場合に便利です。
埋め込みネスト構造体
埋め込みネスト構造体は、外側の構造体の内部で直接宣言されます。これは、ネストされた構造体が外側の構造体内でのみ存在し、他の場所では使用できないことを意味します。
main.c
123456789101112131415161718192021#include <stdio.h> struct Person { char name[50]; int age; struct Address { char street[50]; char city[50]; char index[10]; } address; // embedded nested structure }; int main() { struct Person person = { "Sherlock Holmes", 27, {"Baker Street", "London", "221B"} }; printf("Name: %s\n", person.name); printf("Age: %d\n", person.age); printf("Address: %s, %s, %s\n", person.address.index, person.address.street, person.address.city); return 0; }
この例では、Address構造体がPersonの内部で定義されているため、AddressはPerson構造体のコンテキスト内でのみ存在します。ネストされた構造体のフィールドにはperson.addressを使ってアクセスでき、street、city、indexを取得できます。この方法は、ネストされたデータが特定の外部構造体専用で、他で再利用する必要がない場合に便利です。
独立したネスト構造体
独立したネスト構造体は個別に宣言され、その後外部構造体に含められます。これにより、ネスト構造体を複数の外部構造体で再利用したり、個別にインスタンス化したりすることができます。
main.c
123456789101112131415161718192021222324#include <stdio.h> struct Address { char street[50]; char city[50]; char index[10]; }; struct Person { char name[50]; int age; struct Address address; // nested structure }; int main() { struct Address addr = {"Baker Street", "London", "221B"}; struct Person person = {"Sherlock Holmes", 27, addr}; printf("Name: %s\n", person.name); printf("Age: %d\n", person.age); printf("Address: %s, %s, %s\n", person.address.index, person.address.street, person.address.city); return 0; }
ここでは、Address は Person とは独立して宣言されているため、単独で、または複数の構造体内で使用することができます。Person を初期化する際には、Address フィールドに address インスタンスを割り当てます。ネストされたフィールドへのアクセスも person.address を使って同様に行います。この方法は柔軟性が高く、コードの再利用やモジュール設計を促進します。
スワイプしてコーディングを開始
各製品は、ネストされた構造体 Product を含む構造体 Manufacturer で表現されます。関数は製品の配列を走査し、指定されたメーカーに属する製品かどうかを確認し、一致するすべての製品の合計値(price * quantity)を合計します。
戻り値の型が calculateManufacturerTotal の関数 float を実装してください。
- 関数内で、
float型の変数totalを0.0fで初期化します。 forループを使用して、製品配列を0からnまで反復します。- 各製品について、
manufacturer.companyNameを用いて製品のcompanyNameとstrcmpパラメータを比較します。 - 一致した場合、
price * quantityをtotalに加算します。 - 最終的な
totalの値を返します。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください