我們先回憶下結構體成員的引用和指標的基礎知識:
(1)原理1:
引用結構體變數的成員的一般方式為:結構體變數名.成員變數名。
其中,「.」被稱為成員運算子。它在所有的運算子中優先順序最高,因此可以把「結構體變數名.成員變數名」當成乙個整體看待。
(2)原理2:
通過指向結構體變數的指標p, 引用其成員的方式為:(*p).成員變數名 或
p->成員變數名
即:定義指向結構體型別變數的指標變數p:
struct結構體型別 *p,
則其成員的引用形式為:(1) 指標變數->成員 (2):(*指標變數).成員變數名
情形1:
結構體、類的關係如下所示:
a a;
假設,我們得到了結構體a變數a,現在在要從a變數中提取整形資料videoinputcnt。struct a
struct b
struct c
如何做到呢?
我們的獲取順序是: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...