1. 程式人生 > 其它 >C語言基礎 - 通過案例歷學 - 結構體

C語言基礎 - 通過案例歷學 - 結構體

C語言基礎專題 - 結構體的概念與用法


本文通過例項介紹了C語言中結構體的概念與使用

1.什麼是結構體?

答:結構體是C語言中一種使用者自定義資料型別。

2.怎麼使用結構體?

答:在這裡沒有長篇累牘地對結構體的知識介紹的必要,請看這樣一段關於中學英語猛男的程式碼後就能明白:

#include <stdio.h>
#include <string.h>

/* 在這裡,我們先定義一個名為Student結構體 */
struct Student{           // 使用 struct 關鍵字來定義結構體,Student是結構體的所謂標籤,說白了也就是結構體的名字 
char SecoendName[50]; // 成員變數1 | char FirstName[50]; // 成員變數2 | 成員變數之間(結構成員)允許儲存不同型別的資料項 char gender[50]; // 成員變數3 | int age; // 成員變數4 | }; /*主函式,在這裡我們將使用上面定義的 結構體 */ int main(){ /** * 主函式上面我們定義一個名為Student的結構體 * 它就像一個建築圖紙,可以用來構建多個結構體的例項。 **/ Student stdt;
// 宣告一個名為stdt的Student結構型別,類似於部分面嚮物件語言中類的例項化,在C語言裡與宣告一個如int型別等型別的功能類似。 // 接下來我們對student的各個成員指定一個值,這個值的型別必須滿足結構體Student中預先定義的型別。 strcpy( stdt.SecoendName, "李"); strcpy( stdt.FirstName, "華"); strcpy( stdt.gender, "男"); stdt.age = 17; // 然後我們試著在終端打印出這些值,看看執行結果
printf( "姓 : %s\n", stdt.SecoendName); printf( "名 : %s\n", stdt.FirstName); printf( "性別 : %s\n", stdt.gender); printf( "年齡 : %d\n", stdt.age); return 0; }

執行結果:

姓 : 李
名 : 華
性別 : 男
年齡 : 17

--------------------------------
Process exited after 0.02151 seconds with return value 0
請按任意鍵繼續. . .

3.對以上案例的補充與擴充套件

上面我們定義了一個標籤(之後一律成為名字/名)為Student結構體,即:

struct Student{
   char  SecoendName[50]; 
   char  FirstName[50];
   char  gender[50];
   int   age;
};

我們指定了結構體的名字為Student,其目的就在之後可以使用這個結構體,因此以下缺少結構體名的定義是沒有意義、錯誤的:

// 錯誤的定義
struct {
   char  SecoendName[50]; 
   char  FirstName[50];
   char  gender[50];
   int   age;
};

但是可以在結構體尾部定義一個或者多個結構變數取代結構體名的指定:

#include <stdio.h>
#include <string.h>

/* 直接在末尾給出一個結構變數 stdt ,表示該變數具有struct{...}中所指定的結構 */
struct{
   char  SecoendName[50];
   char  FirstName[50];
   char  gender[50]; 
   int   age; 
}stdt1,stdt2={"小","紅","女",16}; 

/*主函式,在這裡我們將使用上面定義的 結構體 */ 
int main(){
   
   
   strcpy( stdt1.SecoendName, "李");
   strcpy( stdt1.FirstName, "華"); 
   strcpy( stdt1.gender, "男");
   stdt1.age = 17;
 
   // 然後我們試著在終端打印出這些值,看看執行結果
   printf( "姓 : %s\n", stdt1.SecoendName);
   printf( "名 : %s\n", stdt1.FirstName);
   printf( "性別 : %s\n", stdt1.gender);
   printf( "年齡 : %d\n", stdt1.age);
   
   printf( "姓 : %s\n", stdt2.SecoendName);
   printf( "名 : %s\n", stdt2.FirstName);
   printf( "性別 : %s\n", stdt2.gender);
   printf( "年齡 : %d\n", stdt2.age);
   return 0;
}

執行結果:

姓 : 李
名 : 華
性別 : 男
年齡 : 17
姓 : 小
名 : 紅
性別 : 女
年齡 : 16

--------------------------------
Process exited after 0.02143 seconds with return value 0
請按任意鍵繼續. . .

其中可以看到stdt2的初始值在定義結構體的時候我們就指定了,即對該變數完成了初始化。