<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # C 編程中的結構 > 原文: [https://beginnersbook.com/2014/01/c-structures-examples/](https://beginnersbook.com/2014/01/c-structures-examples/) **結構**是由單個名稱表示的不同數據類型的一組變量。讓我們舉一個例子來理解 C 編程中結構的需要。 讓我們說我們需要存儲學生的數據,如學生姓名,年齡,地址,身份證等。這樣做的一種方法是為每個屬性創建一個不同的變量,但是當你需要存儲多個學生的數據時,那么例如,您需要為每個學生再次創建這幾個變量。以這種方式存儲數據非常令人頭疼。 我們可以通過使用結構輕松解決這個問題。我們可以創建一個具有`name`,`id`,`address`和`age`成員的結構,然后我們可以為每個學生創建這個結構的變量。這可能聽起來令人困惑,不要擔心我們會在示例的幫助下理解這一點。 ## 如何在 C 編程中創建一個結構 我們使用 **`struct`** 關鍵字在 C 中創建結構。`struct`關鍵字是結構化數據類型的簡短形式。 ```c struct struct_name { DataType member1_name; DataType member2_name; DataType member3_name; … }; ``` 這里`struct_name`可以是你選擇的任何東西。成員數據類型可以相同或不同。一旦我們聲明了結構,我們就可以使用`struct name`作為數據類型,如`int`,`float`等。 > 首先,我們將看到創建`struct`變量,訪問`struct`成員等的語法,然后我們將看到一個完整的示例。 ### 如何聲明結構的變量? ```c struct? struct_name? var_name; ``` 或者: ```c struct struct_name { DataType member1_name; DataType member2_name; DataType member3_name; … } var_name; ``` ### 如何使用結構變量訪問結構的數據成員? ```c var_name.member1_name; var_name.member2_name; … ``` ### 如何為結構成員賦值? 有三種方法可以做到這一點。 1)使用點(`.`)運算符 ```c var_name.memeber_name = value; ``` 2)在一個聲明中賦值所有成員 ```c struct struct_name var_name = {value for memeber1, value for memeber2 …so on for all the members} ``` 3)**指定初始值設定項** - 我們將在本文末尾討論這個問題。 ### C 中的結構示例 ```c #include <stdio.h> /* Created a structure here. The name of the structure is * StudentData. */ struct StudentData{ char *stu_name; int stu_id; int stu_age; }; int main() { /* student is the variable of structure StudentData*/ struct StudentData student; /*Assigning the values of each struct member here*/ student.stu_name = "Steve"; student.stu_id = 1234; student.stu_age = 30; /* Displaying the values of struct members */ printf("Student Name is: %s", student.stu_name); printf("\nStudent Id is: %d", student.stu_id); printf("\nStudent Age is: %d", student.stu_age); return 0; } ``` 輸出: ```c Student Name is: Steve Student Id is: 1234 Student Age is: 30 ``` ## C 中的嵌套結構:另一個結構中的結構 您可以在另一個結構中使用結構,這是相當可能的。正如我上面所解釋的,一旦你聲明了一個結構, **`struct struct_name`** 就像一個新的數據類型,所以你可以把它包含在另一個結構中,就像其他數據成員的數據類型一樣。聽起來很混亂?別擔心。以下示例將清除您的疑問。 ### C 編程中嵌套結構的例子 假設我們有兩個這樣的結構: **結構 1:`stu_address`** ```c struct stu_address { int street; char *state; char *city; char *country; } ``` **結構 2:`stu_data`** ```c struct stu_data { int stu_id; int stu_age; char *stu_name; struct stu_address stuAddress; } ``` 正如你在這里看到的那樣,我在另一個結構中嵌套了一個結構。 #### 結構內部結構的賦值(嵌套結構) 讓我們以上面看到的兩個結構為例來理解邏輯 ```c struct? stu_data? mydata; mydata.stu_id = 1001; mydata.stu_age = 30; mydata.stuAddress.state = "UP"; //Nested struct assignment .. ``` #### 如何訪問嵌套結構成員? 使用`.`運算符鏈。 假設你想從嵌套結構中單獨顯示城市: ```c printf("%s",? mydata.stuAddress.city); ``` ## 在結構中使用`typedef` `typedef`使代碼簡短并提高了可讀性。在上面的討論中,我們已經看到,每次使用結構時我們都必須使用冗長的語法,這會使代碼混亂,冗長,復雜且可讀性降低。這個問題的簡單解決方案是使用`typedef`。它就像`struct`的別名。 **沒有`typedef`的代碼** ```c struct home_address { int local_street; char *town; char *my_city; char *my_country; }; ... struct home_address var; var.town = "Agra"; ``` **使用`typedef`的代碼** ```c typedef struct home_address{ int local_street; char *town; char *my_city; char *my_country; }addr; .. .. addr var1; var.town = "Agra"; ``` 每次需要聲明`struct`變量時,不必使用`struct home_address`,只需使用`addr`,即我們定義的`typedef`。 ## 指定初始值設定項以設置結構成員的值 我們已經學會了兩種設置`struct`成員值的方法,還有另一種方法可以使用指定的初始化器來完成相同的操作。當我們只賦值結構的少數成員時,這很有用。在以下示例中,結構變量`s2`只有一個賦值的成員。 ```c #include <stdio.h> struct numbers { int num1, num2; }; int main() { // Assignment using using designated initialization struct numbers s1 = {.num2 = 22, .num1 = 11}; struct numbers s2 = {.num2 = 30}; printf ("num1: %d, num2: %d\n", s1.num1, s1.num2); printf ("num1: %d", s2.num2); return 0; } ``` 輸出: ```c num1: 11, num2: 22 num1: 30 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看