通過例項深入理解C C 結構體 類多級指標的使用

2021-06-18 06:45:49 字數 1158 閱讀 7069

我們先回憶下結構體成員的引用和指標的基礎知識:

(1)原理1:

引用結構體變數的成員的一般方式為:結構體變數名.成員變數名。

其中,「.」被稱為成員運算子。它在所有的運算子中優先順序最高,因此可以把「結構體變數名.成員變數名」當成乙個整體看待。

(2)原理2:

通過指向結構體變數的指標p, 引用其成員的方式為:(*p).成員變數名 或

p->成員變數名

即:定義指向結構體型別變數的指標變數p:

struct結構體型別 *p,

則其成員的引用形式為:(1) 指標變數->成員 (2):(*指標變數).成員變數名

情形1:

結構體、類的關係如下所示:

a a;

struct a

struct b

struct c

假設,我們得到了結構體a變數a,現在在要從a變數中提取整形資料videoinputcnt。

如何做到呢?

我們的獲取順序是:a->b->c->int videoinputcount.

步驟如下:

(1)獲取b成員.

由於b是a類/結構體的b型別的成員指標,且a 非指標,因此獲取b成員的方法為:

a.b(2)獲取c成員。

由於b是指標變數,根據原理2,獲取c的方法為:

(a.b)->c

或者:*(a.b).c.

我們這裡選擇方式1.

(3)獲取videoinputcnt.

根據原理1,獲取方法為:

*( ( (a.b)->c ).videoinputcnt );

測試**:

#include typedef struct c

ctype;

typedef struct b

btype;

typedef struct a

atype;

int main(void)

深入理解C C 指標

c語言所有複雜的指標宣告,都是由各種宣告巢狀構成的。如何解讀複雜指標宣告呢?右左法則是乙個既著名又常用的方法。不過,右左法則其實並不是c標 準裡面的內容,它是從c標準的宣告規定中歸納出來的方法。c標準的宣告規則,是用來解決如何建立宣告的,而右左法則是用來解決如何辯識乙個宣告的,兩者可 以說是相反的。...

深入理解C C 函式指標

函式指標陣列的妙用 筆者在開發某軟體過程中遇到這樣乙個問題,前級模組傳給我二進位制資料,輸入引數為 char buffer和 int length,buffer是資料的首位址,length表示這批資料的長度。資料的特點是 長度不定,型別不定,由第乙個位元組 buffer 0 標識該資料的型別,共有2...

深入理解C C 函式指標

函式指標陣列的妙用 筆者在開發某軟體過程中遇到這樣乙個問題,前級模組傳給我二進位制資料,輸入引數為 char buffer和 int length,buffer是資料的首位址,length表示這批資料的長度。資料的特點是 長度不定,型別不定,由第乙個位元組 buffer 0 標識該資料的型別,共有2...