C 語言中的結構體(資料結構)

2021-08-29 02:11:21 字數 2511 閱讀 5857

結構體是在資料結構中經常使用的一類,下面對結構體進行一些知識的補充

結構體宣告的基本形式

struct tag variable-list;
引數解釋

tag:結構體的名字

member-list:成員列表

variable-list:變數列表

在結構體宣告的時候,我們常會看到下面兩種宣告的方式

方式一(不帶 tag)

struct man;
大多數初學者看到這一長串的時候會發昏,這樣的宣告形式和一般的int a的形式有什麼關聯呢?

方式二

struct people;

struct people man1 , man2;

我們可以看到方式二的好處就是減少了變數宣告的冗餘。如果像方式一那樣,你在另乙個地方要宣告乙個相同的變數,就必須把前面的成員列表那一大部分也帶上。

同時使用方法一還會存在下面這個問題

struct man1;

structman2;

man1 = man2; // 報錯

雖然 man1 和 man2 是一樣的結構體型別,但是編譯器會認為是不同的型別。

但如果用方式二就不會報錯

struct people;

struct people man1 , man2; // 或者為了好理解,也可以是

// struct people xiaozhang , xiaoli;

struct people man3;

man1 = man3; // 這樣就正確

typedef 也是在資料結構中常用的 c 語言的東西。它的英文翻譯是 「型別定義」。下面就來

看看它的用法。

我更喜歡叫 typedef 為語義化,因為很大程度上使用 typedef 是為了語義化,是需要結合現實

世界的。

typedef int money
這句**的意思就是,從今往後,money 就可以代表 int 使用了。

money money ; // 此時 money 就是 int 型別
至於為什麼使用 typedef 這樣的方式,個人最大的感受就是語義化吧,當然 typedef 為什麼要使用的其他原因可以自行谷歌。

先來看看這段**

typedef struct people  chinese;
很多人會和結構體的宣告弄混,其實不是,我用圖例來解釋就清楚了(對比結構體宣告的圖例,觀察二者的區別)

當然,用 typedef 的時候,你也可以省略結構的標籤,所以你有時還會看到下面的寫法

typedef struct  chinese;
下面來看看資料結構單鏈表裡面比較難理解的對單鏈表如何去定義

typedef

struct node_1

node_2;

typedef

struct node_1 *linklist;

// 通常**會把 node_1 和 node_2 都寫成一樣的 node,具體的原因我也不是很清楚,

// 但是僅就**而言 node_1 表示的是結構體的名稱,而 node_2 表示的是代替簡寫

// struct node_1 的名稱。

// 特別的是 struct node_1 定義的是乙個單獨的結點,所以我們看到 struct node_1

// *next; 其本意是只該結點的下乙個結點

// 而 typedef struct node_1 *linklist; 表示的是乙個結構體指標,有了指標,我們就

// 可以通過 malloc 函式將乙個單獨的結點擴充成乙個鍊錶了。

// 所以我們在定義 *linklist 的時候,typedef node_2 *linklist; 和

// typedef struct node_1 *linklist; 都是正確的。

主**

C語言 資料結構 結構體

一 結構體的定義 陣列 array 是一組具有相同型別的資料的集合。但在實際的程式設計過程中,我們往往還需要一組型別不同的資料,例如對於學生資訊登記表,姓名為字串,學號為整數,年齡為整數,所在的學習小組為字元,成績為小數,因為資料型別不同,顯然不能用乙個陣列來存放。結構體 struct 可以來存放一...

C語言中結構體

struct oursvoid main struct ours o2 01 結構體整體直接賦值的時候,即使字串也可以直接賦值 o1.str o2.str 錯誤,字串不能直接賦值 字串拷貝的方式 sprintf o1.str,02.str strcpy o1.str,o2.str 3.1 第一種情況...

C語言中的結構體

在 c語言中,結構體 struct 指的是一種資料結構,是c語言中聚合資料型別 aggregate data type 的一類。結構體可以被宣告為 變數 指標或 陣列等,用以實現較複雜的 資料結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員 member 且這些成員可以為不同的型別,成員...