Arduino 程式中的結構體
一個struct僅僅是不同型別變數的集合。Arduino 中的結構體模仿了C 語言中的結構體。因此,如果您熟悉 C 語言的結構體,Arduino 的結構體應該不會有任何問題。結構體宣告語法如下所示:
語法
struct structName{ item1_type item1_name; item2_type item2_name; . . . itemN_type itemN_name; }
下面給出一個例子:
示例
struct student{ String name; int age; int roll_no; }
結構體的元素使用 .(點)符號訪問。此符號既可以用於讀取結構體的元素,也可以用於更改它們。
示例
以下示例說明了這一點:
struct student{ String name; int age; int roll_no; }; void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial.println(); student A = {"Yash", 25, 26}; Serial.println(A.name); Serial.println(A.age); Serial.println(A.roll_no); A.age = 27; Serial.println(A.age); } void loop() { // put your main code here, to run repeatedly: }
輸出
序列埠監視器輸出如下所示:

如您所見,我們能夠使用點符號讀取元素並更改結構體的一個元素(age)。
請注意,雖然結構體的宣告在每個變數之間包含分號,但結構體的建立包含逗號:
student A = {"Yash", 25, 26};建立結構體後,您可以像對待任何其他資料型別一樣對待它。您甚至可以建立返回結構體的函式。
例如:
student funcA(){
student A = {"Yash", 25, 26};
return A;
}在一些與結構體相關的文獻中,您會遇到 → 符號。當您處理指向結構體的指標時,它用於代替點符號。
示例
以下示例演示了這一點。
struct student{ String name; int age; int roll_no; }; student increaseAge(student *B){ B→age = B→age + 1; return *B; } void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial.println(); student A = {"Yash", 25, 26}; Serial.println(A.age); student *C = &A; student D = increaseAge(C); Serial.println(A.age); Serial.println(D.age); } void loop() { // put your main code here, to run repeatedly: }
輸出
序列埠監視器輸出為:

如您所見,結構體指標 C 指向 A。當在 increaseAge 函式中遞增 age 時,它也反映在結構體 A 中。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP