C語言 結構的用法

2021-08-19 19:18:56 字數 1732 閱讀 8017

1.結構

結構是乙個由基本資料型別構成的,並由乙個識別符號來命名的各種變數的組合,結構中可以使用不同的資料型別。結構體可以被宣告為變數、指標或陣列等,用以實現較複雜的資料結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的型別,其成員一般用名字訪問。

2.結構說明和結構變數定義

一般格式

struct 結構名

型別 變數名;

型別 變數名;

};(這裡的

;在定義的時候別忘了)

型別為5種資料型別(整型,浮點型,字元型,指標型和無值型)

eg;structstring        //struct為結構體的關鍵字,string為結構體的標誌

charname;

intage;

char***;

chardepart;

floatwage1,wage2,wage3;

struct stringperson;//person為此結構體宣告的變數

注:一般結構體的標誌,結構體的成員,結構體宣告的變數三部分至少要出現兩個。eg:

//此宣告宣告了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c

//同時又宣告了結構體變數s1

//這個結構體並沒有標明其標籤

struct s1;

//同上宣告了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c

//結構體的標籤被命名為******,沒有宣告變數 

struct******;

//用******標籤的結構體,另外宣告了變數t1、t2、t3

struct****** t1, t2[20], *t3;

//也可以用typedef建立新型別 

typedefstruct ******2;

//現在可以用******2作為型別宣告新的結構體變數

******2 u1, u2[20], *u3;

在上面的宣告中,第乙個和第二宣告被編譯器當作兩個完全不同的型別,即使他們的成員列表是一樣的,如果令t3=&s1,則是非法的。

3.結構陣列和結構指標

結構是一種新型的資料型別,,同樣也可以有結構陣列和結構指標。

結構陣列

結構陣列是具有相同型別的變數集合。假如要定義乙個班級40個同學

的姓名、性別、年齡和住址, 可以定義成乙個結構陣列。如下所示:

structstudent[40];

也可定義為:

struct string*student;

也可省略結構指標只做結構說明,然後用下面的語句定義結構指標;

struct string *student

使用結構指針對結構成員的訪問, 與結構變數對結構成員的訪問在表達方式

上有所不同。結構指針對結構成員的訪問表示為:

結構指標名->結構成員

eg;strcpy(student->name,「lucy」);

student->age=18;

實際上student->age就是(*student).age的縮寫形式。結構指標是指向結構的一指標,即結構中第乙個成員的首位址,因此在使用之前應該對結構指標初始化,即分配整個結構長度的位元組空間:

student = (structstring*)malloc(sizeof)(struct string))

注:malloc函式定義了乙個大小為結構

長度的記憶體區域,將其位址作為指標返回。

c語言結構體中的冒號的用法

結構體中常見的冒號的用法是表示位域。有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如在存放乙個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省儲存空間,並使處理簡便,c語言又提供了一種資料結構,稱為 位域 或 位段 所謂 位域 是把乙個位元組中的二進位劃分...

c語言結構體中的冒號的用法

結構體中常見的冒號的用法是表示位域。有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如在存放乙個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省儲存空間,並使處理簡便,c語言又提供了一種資料結構,稱為 位域 或 位段 所謂 位域 是把乙個位元組中的二進位劃分...

c語言結構體中的冒號的用法

結構體中常見的冒號的用法是表示位域。有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如在存放乙個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省儲存空間,並使處理簡便,c語言又提供了一種資料結構,稱為 位域 或 位段 所謂 位域 是把乙個位元組中的二進位劃分...