c/c++ 陣列允許定義可儲存相同型別資料項的變數,但是結構是 c++ 中另一種使用者自定義的可用的資料型別,它允許您儲存不同型別的資料項。
結構用於表示一條記錄,假設您想要跟蹤圖書館中書本的動態,您可能需要跟蹤每本書的下列屬性:
title :標題
author :作者
subject :類目
book id :書的 id
定義結構
為了定義結構,您必須使用 struct 語句。struct 語句定義了乙個包含多個成員的新的資料型別,struct 語句的格式如下:
struct type_name object_names;
type_name 是結構體型別的名稱,member_type1 member_name1 是標準的變數定義,比如 int i; 或者 float f; 或者其他有效的變數定義。在結構定義的末尾,最後乙個分號之前,您可以指定乙個或多個結構變數,這是可選的。下面是宣告乙個結構體型別 books,變數為 book:
struct books
book;
訪問結構成員
為了訪問結構的成員,我們使用成員訪問運算子(.)。成員訪問運算子是結構變數名稱和我們要訪問的結構成員之間的乙個句號。
下面的例項演示了結構的用法:
例項
#include
#include
using
namespace std;
// 宣告乙個結構體型別 books
struct books
;int
main()
例項中定義了結構體型別 books 及其兩個變數 book1 和 book2。當上面的**被編譯和執行時,它會產生下列結果:
第一本書標題 : c++ 教程
第一本書作者 : runoob
第一本書類目 : 程式語言
第一本書 id : 12345
第二本書標題 : css 教程
第二本書作者 : runoob
第二本書類目 : 前端技術
第二本書 id : 12346
結構作為函式引數
您可以把結構作為函式引數,傳參方式與其他型別的變數或指標類似。您可以使用上面例項中的方式來訪問結構變數:
例項
#include
#include
using
namespace std;
void
printbook
(struct books book )
;// 宣告乙個結構體型別 books
struct books
;int
main()
void
printbook
(struct books book )
當上面的**被編譯和執行時,它會產生下列結果:
書標題 : c++ 教程
書作者 : runoob
書類目 : 程式語言
書 id : 12345
書標題 : css 教程
書作者 : runoob
書類目 : 前端技術
書 id : 12346
指向結構的指標
您可以定義指向結構的指標,方式與定義指向其他型別變數的指標相似,如下所示:
struct books *struct_pointer;
現在,您可以在上述定義的指標變數中儲存結構變數的位址。為了查詢結構變數的位址,請把 & 運算子放在結構名稱的前面,如下所示:
struct_pointer = &book1;
為了使用指向該結構的指標訪問結構的成員,您必須使用 -> 運算子,如下所示:
struct_pointer->title;
讓我們使用結構指標來重寫上面的例項,這將有助於您理解結構指標的概念:
例項
#include
#include
using
namespace std;
void
printbook
(struct books *book )
;struct books
;int
main()
// 該函式以結構指標作為引數
void
printbook
(struct books *book )
當上面的**被編譯和執行時,它會產生下列結果:
書標題 : c++ 教程
書作者 : runoob
書類目 : 程式語言
書 id : 12345
書標題 : css 教程
書作者 : runoob
書類目 : 前端技術
書 id : 12346
typedef 關鍵字
下面是一種更簡單的定義結構的方式,您可以為建立的型別取乙個"別名"。例如:
typedef
struct books
books;
現在,您可以直接使用 books 來定義 books 型別的變數,而不需要使用 struct 關鍵字。下面是例項:
books book1, book2;
您可以使用 typedef 關鍵字來定義非結構型別,如下所示:
typedef
long
int*pint32;
pint32 x, y, z;
x, y 和 z 都是指向長整型 long int 的指標。
C 基礎教程之引用
c 引用 引用變數是乙個別名,也就是說,它是某個已存在變數的另乙個名字。一旦把引用初始化為某個變數,就可以使用該引用名稱或變數名稱來指向變數。c 引用 vs 指標 引用很容易與指標混淆,它們之間有三個主要的不同 不存在空引用。引用必須連線到一塊合法的記憶體。一旦引用被初始化為乙個物件,就不能被指向到...
C 基礎教程之指標
學習 c 的指標既簡單又有趣。通過指標,可以簡化一些 c 程式設計任務的執行,還有一些任務,如動態記憶體分配,沒有指標是無法執行的。所以,想要成為一名優秀的 c 程式設計師,學習指標是很有必要的。例項 include using namespace std int main 當上面的 被編譯和執行時...
C語言基礎教程之for迴圈
前言 c語言中的for迴圈語句使用最為靈活,不僅可以用於迴圈次數已經確定的情況,而且可以用於迴圈次數不確定而只給出迴圈結束條件的情況,它完全可以代替while語句.先看程式 include int main printf loop ended n return 0 執行結果 i 0 i 1 i 2 ...