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){
   Bage = Bage + 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 中。

更新於:2023年9月15日

38K+ 閱讀量

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.