C語言結構體總結

2021-10-02 16:15:42 字數 2200 閱讀 1515

本文沒有提及結構體指標變數,另一篇對其進行了說明:戳這裡

struct 結構體名

上面是定義的結構體型別,可以說是乙個基礎。

在定義結構體型別時,系統並不為結構體型別分配記憶體空間,只有當定義結構體型別的變數時,系統才為每乙個變數分配相應的儲存單元。

方法一:

首先定義結構體型別,再用結構體型別定義變數

struct 結構名

;struct 結構名 變數名列表;

//在c++中,可以直接:結構名 變數名列表。省略「struct」

方法二:

定義結構體型別的同時定義結構體變數

struct 結構名

變數名列表;

方法三:

直接定義結構體變數(一次性使用)

struct

變數名列表;

如果想要在別處定義變數,就必須將"struct"這部分重寫。

typedef

struct 結構名

新名字;

這樣,我們就可以用這個 「新名字」 命名結構體變數

typedef

struct 結構名

新名字;

新名字 變數名;

//乙個結構體變數

當然,我們也可以不寫 「結構名」。這樣也是正確的。

我們將乙個結構體變數定義好時,就可以對其進行初始化了。

給出兩種初始化方法,如下例項:

#include

#include

//1.利用上文中的方法二定義結構體變數,並賦初值

struct booksbook=

;int

main

(int argc,

char

*ar**)

;return0;

}

例項給的兩種方法是最常用到的。

當然,我們用定義結構體變數的方法三,並類似例項賦初值也是沒有問題的。但就像上**調的,這種用法只是一次性的。

struct

book=

;

【注】:直接訪問結構體變數的成員,給其賦初值也可以。只是沒有涉及到訪問結構體變數的成員,所以暫且略過,下文會詳細說到。

如果用結構體定義了乙個變數,那麼結構體中的內容就是結構體變數的成員。那麼我們該如何訪問呢?

例項一:

#include

#include

struct

book=

;int

main

(int argc,

char

*ar**)

我們用 「結構體變數名 . 成員名」 就可訪問。

上文提到,用這種方法可以為變數的成員賦值,看如下例項:

#include

#include

struct

book;

intmain

(int argc,

char

*ar**)

struct studnet

;struct student stud[5]

;

其實,結構體陣列的定義和結構體變數的定義差不多,只不過這個變數時陣列而已。所以定義結構體變數的方法,在這裡也可以使用。

對於結構體陣列,每乙個陣列元素都包含著結構體中的所有結構體成員。所以初始化時,要初始化到位。

如下面的例子:

struct bookbook[5]

=,//陣列0號元素,包含著title、id,下面同理,,

,};

我們定義了乙個book結構體,宣告了book陣列,並初始化。

初始化好之後,我們可以將值取出。

因為每個陣列元素都包含所有的結構體成員,所以有以下取值方法:

printf

("%s,%d"

,book[0]

.title,book[0]

.id)

;

我們可以用訪問成員變數的方法為其賦值

雪 C語言結構體總結七

1.結構體 是一種自定義的資料型別 宣告 struct 結構體名稱 struct student 1 對結構體變數的定義 由結構體修飾的變數叫做結構體變數 struct struct 結構體名student1 變數名stu1 struct 結構體名student1 變數名stu2 輸出 變數名.成員...

結構體總結

結構體總結 共用體 聯合體 1.乙個結構變數的所佔記憶體空間大小,一般大於或者等於結構中所有成員變數大小之和,成員變數在結構體記憶體空間按照定義的順序依次儲存。2.共用體是將幾種不同型別的變數存放在同一段記憶體單元中。3.語法形式 union 共用體名共用體變數名 4.共用體與結構體的定義形式相似,...

結構體總結

1.結構體的定義 結構體是一些值得集合,這些值稱為成員變數,結構體的每個成員可以是不同型別的變數。2.結構體的宣告 結構體的名稱盡量做到容易理解,結構體的名稱可以省略但是不建議省略 在結構體裡可以放任何合法的內容,結構體內容 member 不能為空,這是在c語言中的要求 結構體變數 variable...