天天看點

c語言的結構體詳解,C語言之結構體詳解

結構體類型

C語言中還有一種類型叫做結構體類型,它是可以儲存不同類型資料并且可以把這些不同類型的資料當做一個整體來管理的類型

1).結構體的定義

文法:

struct 結構體名{

成員清單;

};        注意:這裡是有 分号 的!!

成員清單裡面寫成員。成員的文法格式為:

類型  成員名;  // 每個成員之間用分号隔開

例:

struct girlFriend{

char name[50]; //姓名

int age;         //年齡

char gender[4];//性别

int height;     //身高

int weight;     //體重

char bodyCai;  //身材

};

注意:此時寫了多個不用類型的成員變量,但是并沒有存儲資料,隻是定義了一個新的資料類型————結構體類型

2).結構體類型的變量的聲明

結構體的聲明文法:

struct 結構體名 變量名;

注意:struct和結構體名合起來才叫一個類型,就比如說int *一樣由int和*合起來才算一個指針類型

例:

struct girlFriend gf;  // gf就是變量名,struct girlFriend是類型

3).結構體的初始化和指派

文法1:

結構體類型 結構體變量名 = { 成員資料1,成員資料2,....成員資料n };

例:struct girlFriend fj = { "小紅",16,"女",155,45,'O' };

文法2:

結構體類型  結構體變量名 =  { .成員名 = 資料1,.成員名2 = 資料2.....  };

例:struct girlFriend fr = { .gender = "女",.height=155,.name="小紅",.bodyCai='S',.weight = 80,.age=67  };

文法3:結構體變量,也允許先聲明,後一次性指派

例:struct girlFriend fj;

fj = (struct girlFriend){ "小紅",16,"女",155,45,'O' };

4).結構體的取值

文法: 結構體變量名.成員名;

例: fj.age;

fj.name;

注意:沒有任何的格式化控制符能幫你一下子輸出結構體變量的值

5).結構體其他的一些細節

1.結構體類型可以定義在函數内,也可以定在函數外

如果定義在函數外,那麼從它定義的位置開始,直接到檔案結束,都可以使用到這個類型

如果定義在函數内,那麼它的作用範圍隻能從它定義的位置開始,直到它所在的代碼塊結束

2.可以在定義結構體類型的時候,就聲明這個結構體類型的變量

例:

struct student{

char *name;

int age;

int gender;

}s2;  //這個s2就是這個結構體的變量

如果要同時聲明多個變量,那麼以,隔開

例:

struct student{

char *name;

int age;

int gender;

}s2,s3,s4;

3.可以定義一個匿名的結構體,一般都會在定義匿名結構體的時候就聲明它的變量,否則沒有任何意義

例:

struct{

int year;

int month;

int day;

}day1;  //day1就是這個匿名結構體的變量

6).typedef與結構體搭配使用

聲明結構體變量的文法:

struct 結構體名 變量名;

類型,有2個單詞

int num;

char ch;

float f;

struct student s1;

用typedef就可以用一個關鍵字來聲明結構體變量

文法:

typedef struct{

成員清單;

}類型名;

例:

typedef struct {

char *name;

int age;

int gender;

}Student; //因為前面加了typedef,是以此處的Student不是變量,而是類型