C入門8:構造体入門
3250 ワード
1.構造体とは何ですか.
配列は順序があり、タイプが同じデータのセットですが、いくつかのタイプの異なるデータを一緒に配置したい場合はどうすればいいのでしょうか.配列は同じタイプの複数の変数で結合されています.構造体は異なるタイプの複数の変数で結合されています.
例えば、学生の名前、年齢、成績はそれぞれ異なるデータ型から構成されています.すなわち、名前は文字列データで、年齢は整数型データで、成績は浮動小数点型(小数)型データです.このとき、構造体を使用して実現することができます.
2.構造体はどう使いますか.
2.1構造体の定義構文
構造体のメンバー定義は変数と同じであり,すなわち構造体に複数の変数が定義されている.たとえば、学生の構造体を定義します.
2.2構造体変数の定義
以上、名前、年齢、成績の3つのメンバーを持つ
2.3構造体メンバー参照
構造体全体の入力と出力はできません.構造体変数メンバー参照と呼ばれるメンバーを個別に操作する必要があります.フォーマットは次のとおりです.
構造体変数名とメンバーの間には、英語の句点
2.5構造体メンバーの割り当て
構造体変数メンバー付与は、構造内のすべてのメンバーに順次付与されます.
注:数値タイプメンバーは直接値を割り当てることができます.文字列タイプ変数は文字列レプリケーション関数を使用する必要があります.
2.6構造体賦課
構造体変数の全体的な付与は、構造体のすべてのメンバーに付与されます.
構造体は全体的に値を付与することができ、配列は直接値を付与することはできません.
2.7構造体全体の初期化
構造体変数が直接初期化されると、操作がより簡単になります.
注:付与データの順序は、構造体メンバーの宣言順序と一致する必要があります.
2.8構造体部分初期化
構造体は、全体の初期化に加えて、以下のように初期化してもよい.問題の構造体の部分は初期化して、初期化していないメンバーの値はいくらですか?
3.その他の構文
3.1構造体を定義し、同時に構造体変数を定義する
3.2構造体を定義し、同時に構造体変数を定義し、初期値を付与する
配列は順序があり、タイプが同じデータのセットですが、いくつかのタイプの異なるデータを一緒に配置したい場合はどうすればいいのでしょうか.配列は同じタイプの複数の変数で結合されています.構造体は異なるタイプの複数の変数で結合されています.
例えば、学生の名前、年齢、成績はそれぞれ異なるデータ型から構成されています.すなわち、名前は文字列データで、年齢は整数型データで、成績は浮動小数点型(小数)型データです.このとき、構造体を使用して実現することができます.
2.構造体はどう使いますか.
2.1構造体の定義
struct {
;
};
構造体のメンバー定義は変数と同じであり,すなわち構造体に複数の変数が定義されている.たとえば、学生の構造体を定義します.
struct Student {
char name[32]; //
int age; //
float score; //
};
2.2構造体変数の定義
struct Student student1;
以上、名前、年齢、成績の3つのメンバーを持つ
Student
型の構造体変数student1
を定義した.2.3構造体メンバー参照
構造体全体の入力と出力はできません.構造体変数メンバー参照と呼ばれるメンバーを個別に操作する必要があります.フォーマットは次のとおりです.
.
構造体変数名とメンバーの間には、英語の句点
.
があります.例:学生情報の入出力#include
struct Student {
char name[32]; //
int age; //
float score; //
};
int main(){
struct Student student1;
scanf("%s%d%f",&student1.name,&student1.age,&student1.score);
printf(" :%s
:%d
:%0.1f
",student1.name,student1.age,student1.score);
}
2.5構造体メンバーの割り当て
構造体変数メンバー付与は、構造内のすべてのメンバーに順次付与されます.
struct Student student1;
struct Student student2;
strcpy(student1.name," ");
student1.age = 19;
student1.score = 90.5;
strcpy(student2.name," ");
student2.age = 18;
student2.score = 95.5;
printf(" \t \t
");
printf("%s\t%d\t%.1f
",student1.name,student1.age,student1.score);
printf("%s\t%d\t%.1f
",student2.name,student2.age,student2.score);
注:数値タイプメンバーは直接値を割り当てることができます.文字列タイプ変数は文字列レプリケーション関数を使用する必要があります.
2.6構造体賦課
構造体変数の全体的な付与は、構造体のすべてのメンバーに付与されます.
struct Student student1;
struct Student student2;
strcpy(student1.name," ");
student1.age = 19;
student1.score = 90.5;
student2 = student1;
printf(" \t \t
");
printf("%s\t%d\t%.1f
",student1.name,student1.age,student1.score);
printf("%s\t%d\t%.1f
",student2.name,student2.age,student2.score);
構造体は全体的に値を付与することができ、配列は直接値を付与することはできません.
2.7構造体全体の初期化
構造体変数が直接初期化されると、操作がより簡単になります.
struct Student student1 = {" ",19,90.5};
struct Student student2 = {" ",18,95.5};
printf(" \t \t
");
printf("%s\t%d\t%.1f
",student1.name,student1.age,student1.score);
printf("%s\t%d\t%.1f
",student2.name,student2.age,student2.score);
注:付与データの順序は、構造体メンバーの宣言順序と一致する必要があります.
2.8構造体部分初期化
構造体は、全体の初期化に加えて、以下のように初期化してもよい.
struct Point3D{
int x;
int y;
int z;
};
struct Point3D p = {.x=10,.z=20};
3.その他の構文
3.1構造体を定義し、同時に構造体変数を定義する
struct Student{
char name[32]; //
int age; //
float score; //
} student1,student2;
3.2構造体を定義し、同時に構造体変数を定義し、初期値を付与する
struct Student{
char name[32]; //
int age; //
float score; //
} student1 = {“Zhang”, 19, 90.5};