void
menu11
(void);
void
menu12
(void);
void
menu21
(void);
typedef
struct
table;
table table[3]
=,,,
};void
setup()
void
loop()
}
以下是**分析
typedef
struct
table;
定義乙個結構體,裡面包含了乙個函式指標變數void (*operation)(void);
operation是乙個指向函式的指標。
table table[3]
=,,,
};
然後定義乙個結構體陣列,每乙個陣列都是乙個結構體,最後的menu11,menu12,manu21都是函式的名字,因為函式的名字就是函式的位址。
void
loop()
}
table[i].operation();這裡的i在0,1,2之間變化。程式每次執行到這裡,會把table[i].operation對應的menu11,menu12,menu21函式執行一遍。
執行的結果是在串列埠監視器裡面顯示:
這樣做的好處是,只需要改變變數i的值就能執行不同的函式。比如運用到顯示屏的重新整理等等。
指標在結構體中的使用
結構體的定義如下所示,struct為結構體關鍵字,tag為結構體的標誌,member list為結構體成員列表,其必須列出其所有成員 variable list為此結構體宣告的變數。struct tag variable list 在一般情況下,tag member list variable li...
在C 中結構體為函式引數的例子
將乙個結構體變數中的資料傳遞給另乙個函式,有下列3種方法 1.用結構體變數名作引數。一般較少用這種方法。2.用指向結構體變數的指標作實參,將結構體變數的位址傳給形參。3.用結構體變數的引用變數作函式引數。下面通過乙個簡單的例子來說明,並對它們進行比較。例7.5 有乙個結構體變數stu,內含學生學號 ...
結構體中使用string
1.malloc只是負責申請一塊記憶體,沒有任何其他動作。2.直接宣告結構體或者new 乙個結構體指標,會呼叫預設建構函式。如果結構中包含類,同樣會呼叫成員類的預設建構函式。3.程式中的記憶體錯誤是因為使用malloc分配乙個結構體內存,但是string是乙個類。並沒有呼叫string的建構函式,所...