19 C語言 結構體

2021-09-28 20:57:50 字數 3617 閱讀 4169

c 陣列允許定義可儲存相同型別資料項的變數,結構是 c 程式設計中另一種使用者自定義的可用的資料型別,它允許您儲存不同型別的資料項。

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

為了定義結構,您必須使用 struct 語句。struct 語句定義了乙個包含多個成員的新的資料型別,struct 語句的格式如下:

struct tag  variable-list ;
struct books

book;

在一般情況下,tag、member-list、variable-list 這 3 部分至少要出現 2 個。以下為例項:

//此宣告宣告了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c

//同時又宣告了結構體變數s1

//這個結構體並沒有標明其標籤

struct

s1;//此宣告宣告了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c

//結構體的標籤被命名為******,沒有宣告變數

struct ******

;//用******標籤的結構體,另外宣告了變數t1、t2、t3

struct ****** t1, t2[20]

,*t3;

//也可以用typedef建立新型別

typedef

struct

******2;

//現在可以用******2作為型別宣告新的結構體變數

******2 u1, u2[20]

,*u3;

在上面的宣告中,第乙個和第二宣告被編譯器當作兩個完全不同的型別,即使他們的成員列表是一樣的,如果令 t3=&s1,則是非法的。

結構體的成員可以包含其他結構體,也可以包含指向自己結構體型別的指標,而通常這種指標的應用是為了實現一些更高階的資料結構如鍊表和樹等。

//此結構體的宣告包含了其他的結構體

struct complex

;//此結構體的宣告包含了指向自己型別的指標

struct node

;

如果兩個結構體互相包含,則需要對其中乙個結構體進行不完整宣告,如下所示:

struct b;

//對結構體b進行不完整宣告

//結構體a中包含指向結構體b的指標

struct a

;//結構體b中包含指向結構體a的指標,在a宣告完後,b也隨之進行宣告

struct b

;

和其它型別變數一樣,對結構體變數可以在定義時指定初始值。

#include

struct books

book =

;int

main()

執行輸出結果為:

title : c 語言

author: runoob

subject: 程式語言

book_id:

123456

為了訪問結構的成員,我們使用成員訪問運算子(.)。成員訪問運算子是結構變數名稱和我們要訪問的結構成員之間的乙個句號。您可以使用 struct 關鍵字來定義結構型別的變數。下面的例項演示了結構的用法:

#include

#include

struct books

;int

main()

當上面的**被編譯和執行時,它會產生下列結果:

book 1 title : c programming

book 1 author : nuha ali

book 1 subject : c programming tutorial

book 1 book_id :

6495407

book 2 title : telecom billing

book 2 author : zara ali

book 2 subject : telecom billing tutorial

book 2 book_id :

6495700

您可以把結構作為函式引數,傳參方式與其他型別的變數或指標類似。您可以使用上面例項中的方式來訪問結構變數:

#include

#include

struct books

;/* 函式宣告 */

void

printbook

(struct books book )

;int

main()

void

printbook

(struct books book )

當上面的**被編譯和執行時,它會產生下列結果:

book title : c programming

book author : nuha ali

book subject : c programming tutorial

book book_id :

6495407

book title : telecom billing

book author : zara ali

book subject : telecom billing tutorial

book book_id :

6495700

您可以定義指向結構的指標,方式與定義指向其他型別變數的指標相似,如下所示:

struct books *struct_pointer;
struct_pointer =

&book1;

為了使用指向該結構的指標訪問結構的成員,您必須使用 -> 運算子,如下所示:

struct_pointer->title;
使用結構指標來重寫上面的例項;

#include

#include

struct books

;/* 函式宣告 */

void

printbook

(struct books *book )

;int

main()

void

printbook

(struct books *book )

當上面的**被編譯和執行時,它會產生下列結果:

book title : c programming

book author : nuha ali

book subject : c programming tutorial

book book_id :

6495407

book title : telecom billing

book author : zara ali

book subject : telecom billing tutorial

book book_id :

6495700

(19)C 日期 時間

本地時間和格林威治時間安全的寫法 安全的寫法 在vs 2013中執行此程式會出現錯誤 c 標準庫沒有提供所謂的日期型別。c 繼承了 c 語言用於日期和時間操作的結構和函式。為了使用日期和時間相關的函式和結構,需要在 c 程式中引用 標頭檔案。結構型別 tm 把日期和時間以 c 結構的形式儲存,tm ...

文件總結19 C語言中的指標

儲存位址的,位址是乙個數字。左值代表空間!右值代表空間裡面的內容!1 定義乙個指標變數p,型別是int 2 p指向乙個int型資料 int p 指標的繫結 p a 指標的解引用 p 23 int p1 a 定義指標的同時並且初始 2 const 關鍵字 const 修飾的變數是常數,不可更改,只能初...

19 C 裡面的氣泡排序操作

在前面我們學習了for 迴圈,這裡我們就運用前面學習的 for迴圈,來實現乙個氣泡排序的操作。通常情況下,氣泡排序都是進行從小到大的排序。下面是我實現的核心源 int array 01 new int 10 random random 01 new random 開始建立隨機的數列 console....