struct type_name {
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
.
.
} object_names;
type_name 是結構型別的名稱,object_name 可以是一組該結構型別的物件的有效識別符號。在花括號 {} 內,是資料成員的列表,每個成員都用一個型別和一個有效的識別符號作為其名稱來指定。 |
|
product 的結構型別,並定義它有兩個成員:weight 和 price,每個成員都有不同的基本型別。這個宣告建立了一個新的型別(product),然後用它來宣告該型別的三個物件(變數):apple、banana 和 melon。請注意,一旦 product 被宣告,它的使用方式就和任何其他型別一樣。struct 定義的末尾,分號(;)之前,可以使用可選欄位 object_names 來直接宣告該結構型別的物件。例如,結構物件 apple、banana 和 melon 可以在定義資料結構型別時就進行宣告: |
|
object_names,型別名稱(product)就變成了可選的:struct 語句要麼需要一個 type_name,要麼在 object_names 中至少有一個名稱,但不一定兩者都需要。product)和該型別的物件(apple、banana 和 melon)。從一個結構型別(product)可以宣告出許多物件(例如 apple、banana 和 melon)。apple、banana 和 melon),就可以直接訪問它們的成員。語法很簡單,在物件名和成員名之間插入一個點(.)。例如,我們可以像操作它們各自型別的標準變數一樣來操作這些元素: |
|
apple.weight、banana.weight 和 melon.weight 的型別是 int,而 apple.price、banana.price 和 melon.price 的型別是 double。 |
|
Enter title: Alien Enter year: 1979 My favorite movie is: 2001 A Space Odyssey (1968) And yours is: Alien (1979) |
yours.year 是一個 int 型別的有效變數,而 mine.title 是一個 string 型別的有效變數。mine 和 yours 本身也是有型別的變數(movies_t 型別)。例如,它們都被傳遞給了 printmovie 函式,就像它們是簡單變數一樣。因此,資料結構的一個特性就是能夠既可以單獨引用其成員,也可以引用整個結構。在這兩種情況下,都使用相同的識別符號:結構體的名稱。 |
|
Enter title: Blade Runner Enter year: 1982 Enter title: The Matrix Enter year: 1999 Enter title: Taxi Driver Enter year: 1976 You have entered these movies: Blade Runner (1982) The Matrix (1999) Taxi Driver (1976) |
|
|
amovie 是一個 movies_t 結構型別的物件,而 pmovie 是一個指向 movies_t 結構型別物件的指標。因此,下面的程式碼也是有效的: |
|
pmovie 的值將被賦為物件 amovie 的地址。->)。 |
|
Enter title: Invasion of the body snatchers Enter year: 1978 You have entered: Invasion of the body snatchers (1978) |
->)是一個解引用運算子,專門用於指向含有成員的物件的指標。這個運算子用於直接從物件的地址訪問其成員。例如,在上面的例子中: |
|
|
|
pmovie->title 和 (*pmovie).title 這兩個表示式都是有效的,都訪問了由名為 pmovie 的指標所指向的資料結構的成員 title。這與下面的表示式完全不同: |
|
|
|
pmovie 中一個假設存在的名為 title 的指標成員所指向的值(但實際情況並非如此,因為 title 不是指標型別)。下表總結了指標運算子和結構成員運算子的可能組合:| 表示式 | 求值內容 | 等價於 |
|---|---|---|
a.b | 物件 a 的成員 b | |
a->b | 由 a 指向的物件的成員 b | (*a).b |
*a.b | 物件 a 的成員 b 所指向的值 | *(a.b) |
|
|
|
|
動態記憶體 | 目錄 | 其他資料型別 |