struct 結構體解析(原)

2021-09-20 14:56:20 字數 2859 閱讀 1107

(一)基本概念

結構體是乙個或是多個變數的集合,這些變數可能為不同的型別,為了處理的方便而將這些變數組合在乙個名字之下。我們將關鍵字struct引入了結構宣告中。結構宣告包含在花括號內的一系列宣告組成。例如:

// 以下是乙個巨普通的結構體,表示座標。
// point 為結構標記;x, y為成員。
struct point

// 以下是跟變數表的情形
struct point

px, py, pz;
(二)使用方法

1. 初始化方法

(1) 結構體變數的初始化方式分別給結構體的成員變數以初始值.

具體的形式如下:

struct 結構體識別符號

;
第一種初始化:
struct 結構體識別符號 變數名 = ;

struct point impl = ;

第二種初始化:
struct 結構體識別符號 變數名;

變數名.成員 = 值;
struct point impl;

impl.x = 100;
impl.y = 200;
第三種初始化方法:
struct 結構體識別符號

變數名 = ;
struct point

impl = ;
對於結構體內還有結構體的形式,可以用以下的方式來解決:

struct rect

;
第一種初始化方法:
struct rect rect_impl;

rect_impl.pt1.x = 100;
第二種初始化方法:
struct rect

rect_impl = ,
};
2. 結構體與指標

結構與指標其實密不可分,在函式的返回和呼叫中,我們不能用複製整個結構體的方式,因為這樣的效率實在是太低了。誰都不希望將乙個大象抗在身上,然後到處跑!

這個時候,指標出現了。就像救世主出現在人間,趕走了大象,留下了羽毛。

以下是實現形式:

struct point *ppt, origin;

origin.x = 100;
origin.y = 200;
ppt = &origin;    // 將origin的位址傳給ppt

// 以下是結構體指標的兩種呼叫形式
std::cout << (*ppt).x << std::endl;    // 100

std::cout << ppt->x << std::endl;      // 100

// 對於函式的呼叫
struct point *func(struct point *, int x){}

3. 結構體與陣列,鍊錶

如果說當個結構體個體只是一塊板磚的話,那麼與陣列結合,就是一堆板磚啊!

以下是陣列

// 結構體與陣列
// 第一種實現形式:
struct point

pta = ;
// 第二種實現形式:
struct point

;
struct point pta[10];    // 定義了10個point

pta[1].x = 100;
以下是鍊錶

// 二叉樹的鏈式結構
typedef struct tnode

*bitree;
// 構造二叉樹的方法
// 構造一棵空的二叉樹
void initbitree(bitree &bit)

bit->lchild = null;    // 左子樹為空

bit->rchild = null;    // 右子樹為空

}
4. 結構體與typedef

typedef用來建立新的資料型別名。以下用**來解釋:

// 二叉樹的鏈式結構
typedef struct tnode

*bitree;
// 也可用下面的方式
struct tnode

;
typedef struct tnode *bitree;

// 以上兩種效果都一樣
其實,typedef沒有建立新的型別。只是增加了乙個新的名詞而已。這樣做的好處有倆

參考文獻

1.《c++ primer》和《c語言程式設計》

2. 參閱了網上許多小道的內容,這個記不得了。。抱歉抱歉!!

struct 結構體解析(原)

一 基本概念 結構體是乙個或是多個變數的集合,這些變數可能為不同的型別,為了處理的方便而將這些變數組合在乙個名字之下。我們將關鍵字struct引入了結構宣告中。結構宣告包含在花括號內的一系列宣告組成。例如 point 為結構標記 x,y為成員。struct point 以下是跟變數表的情形 stru...

什麼結構體 struct

簡單的來說,結構體就是乙個可以包含不同資料型別的乙個結構,它是一種可以自己定義的資料型別,它的特點和陣列主要有兩點不同,首先結構體可以在乙個結構中宣告不同的資料型別,第二相同結構的結構體變數是可以相互賦值的,而陣列是做不到的,因為陣列是單一資料型別的資料集合,它本身不是資料型別 而結構體是 陣列名稱...

定義結構體 struct

於 鏈結,struct student struct student stu struct student stuarray 10 struct student pstru 結構體型別是struct student,因此,struct和student都不能省略。但實際上,我用codeblocks執行...