Linux c開発-構造体
3409 ワード
実際のプロジェクト開発では,比較的複雑なデータ構造がある.たとえば、学生には、名前や年齢などの属性パラメータがあります.この時、伝統的なタイプを使うと、私たちのニーズを満たすことができません.C言語の構造体はこの問題を解決することができる.
1.構造体の定義
構造体はすべてキーワードstructによって定義されます.たとえば、学生の名前と年齢を含む構造体を定義します.
structは構造体のキーワードです.studentは構造体の名前です.
2.構造体変数
構造体変数には、さまざまな方法で定義されます.
1.構造体上で直接定義します.この方式は比較的よく使われる.
2.構造変数を直接説明します.この方法はstudentを省いて、このいくつかの変数だけがこの構造体を使うことができて、他の人は使用できません.
3.構造変数を説明する前に、構造タイプを定義します.
3.構造体における帯構造体
studentの構造体では、date構造体のパラメータを定義します.この場合,構造体には構造体があり,複雑なデータ構造タイプに適している.
4.構造体構造変数使用
構造体における構造変数は、一般に用いる.時です.{構造体変数名}.{構造変数}
例:
5.構造体変数の初期化
6.構造体配列
7.構造体ポインタ
8.typedefを使用して構造体を定義する
typedefを使用して構造体を定義するメリットは、次のとおりです.
1.毎回structキーワードを書く必要はありません
2.よりイメージ的な表現データ構造タイプ
1.構造体の定義
構造体はすべてキーワードstructによって定義されます.たとえば、学生の名前と年齢を含む構造体を定義します.
struct student {
char *username;
int age;
};
structは構造体のキーワードです.studentは構造体の名前です.
2.構造体変数
構造体変数には、さまざまな方法で定義されます.
1.構造体上で直接定義します.この方式は比較的よく使われる.
//
struct student {
char *username;
int age;
} s1, s2;
2.構造変数を直接説明します.この方法はstudentを省いて、このいくつかの変数だけがこの構造体を使うことができて、他の人は使用できません.
//
struct {
char *username;
int age;
} s1, s2;
3.構造変数を説明する前に、構造タイプを定義します.
//
struct student {
char *username;
int age;
};
struct student s1;
struct student s2;
3.構造体における帯構造体
//
struct date {
int month;
int day;
int year;
};
struct student {
char *username;
int age;
struct date birthday;
};
struct student s1;
まずdateの構造体を定義し、主に時間情報を格納するために使用します.studentの構造体では、date構造体のパラメータを定義します.この場合,構造体には構造体があり,複雑なデータ構造タイプに適している.
4.構造体構造変数使用
構造体における構造変数は、一般に用いる.時です.{構造体変数名}.{構造変数}
例:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
//
struct student {
char *username;
int age;
};
int main(void) {
struct student s1;
s1.username = "test";
s1.age = 100;
printf(" : %s %d", s1.username, s1.age);
}
5.構造体変数の初期化
// s1
struct student {
char *username;
int age;
} s1 = {"test", 100};
int main(void) {
printf(" : %s %d", s1.username, s1.age);
}
6.構造体配列
// s1
struct student {
char *username;
int age;
};
int main(void) {
struct student s1[2]; //
s1[0].username = "test";
s1[0].age = 100;
s1[1].username = "test2";
s1[1].age = 200;
printf(" : %s %d
", s1[0].username, s1[0].age);
printf(" : %s %d", s1[1].username, s1[1].age);
}
7.構造体ポインタ
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
//
struct student {
char *username;
int age;
};
int main(void) {
struct student *p = NULL; //
p = (struct student *) malloc(sizeof(struct student)); // ,p
p->username = "zhuli";
p->age = 100;
printf(" : %s %d", p->username, p->age);
}
8.typedefを使用して構造体を定義する
typedefを使用して構造体を定義するメリットは、次のとおりです.
1.毎回structキーワードを書く必要はありません
2.よりイメージ的な表現データ構造タイプ
typedef struct student {
char *username;
int age;
} STU;
int main(void) {
STU *p = NULL; //
p = (STU *) malloc(sizeof(STU)); // ,p
p->username = "zhuli";
p->age = 100;
printf(" : %s %d", p->username, p->age);
}