20.C 結構體

1.C 結構體

C 數組容許定義可存儲相同類型數據項的變量,結構是 C 編程中另外一種用戶自定義的可用的數據類型,它容許您存儲不一樣類型的數據項。編程

結構用於表示一條記錄,假設您想要跟蹤圖書館中書本的動態,您可能須要跟蹤每本書的下列屬性:數組

  • Title
  • Author
  • Subject
  • Book ID

定義結構
爲了定義結構,您必須使用 struct 語句。struct 語句定義了一個包含多個成員的新的數據類型,struct 語句的格式以下:數據結構

struct tag { 
    member-list
    member-list 
    member-list  
    ...
} variable-list ;
spa

 

tag 是結構體標籤。指針

member-list 是標準的變量定義,好比 int i; 或者 float f,或者其餘有效的變量定義。編譯器

variable-list 結構變量,定義在結構的末尾,最後一個分號以前,您能夠指定一個或多個結構變量。下面是聲明 Book 結構的方式:it

struct Books { char title[50];編譯

char author[50];變量

char subject[100];數據類型

int book_id;

} book;

在通常狀況下,tag、member-list、variable-list 這 3 部分至少要出現 2 個。如下爲實例:

//此聲明聲明瞭擁有3個成員的結構體,分別爲整型的a,字符型的b和雙精度的c
//同時又聲明告終構體變量s1
//這個結構體並無標明其標籤
struct 
{
    int a;
    char b;
    double c;
} s1;
 
//此聲明聲明瞭擁有3個成員的結構體,分別爲整型的a,字符型的b和雙精度的c
//結構體的標籤被命名爲SIMPLE,沒有聲明變量
struct SIMPLE
{
    int a;
    char b;
    double c;
};
//用SIMPLE標籤的結構體,另外聲明瞭變量t一、t二、t3
struct SIMPLE t1, t2[20], *t3;
 
//也能夠用typedef建立新類型
typedef struct
{
    int a;
    char b;
    double c; 
} Simple2;
//如今能夠用Simple2做爲類型聲明新的結構體變量
Simple2 u1, u2[20], *u3;

在通常狀況下,tag、member-list、variable-list 這 3 部分至少要出現 2 個。如下爲實例:

//此聲明聲明瞭擁有3個成員的結構體,分別爲整型的a,字符型的b和雙精度的c
//同時又聲明告終構體變量s1
//這個結構體並無標明其標籤
struct 
{
    int a;
    char b;
    double c;
} s1;
 
//此聲明聲明瞭擁有3個成員的結構體,分別爲整型的a,字符型的b和雙精度的c
//結構體的標籤被命名爲SIMPLE,沒有聲明變量
struct SIMPLE
{
    int a;
    char b;
    double c;
};
//用SIMPLE標籤的結構體,另外聲明瞭變量t一、t二、t3
struct SIMPLE t1, t2[20], *t3;
 
//也能夠用typedef建立新類型
typedef struct
{
    int a;
    char b;
    double c; 
} Simple2;
//如今能夠用Simple2做爲類型聲明新的結構體變量
Simple2 u1, u2[20], *u3;

,第一個和第二聲明被編譯器看成兩個徹底不一樣的類型,即便他們的成員列表是同樣的,若是令 t3=&s1,則是非法的。

結構體的成員能夠包含其餘結構體,也能夠包含指向本身結構體類型的指針,而一般這種指針的應用是爲了實現一些更高級的數據結構如鏈表和樹等。

相關文章
相關標籤/搜索