Arduino 從函式返回陣列

Ammar Ali 2023年10月12日
Arduino 從函式返回陣列

本教程將討論通過修改 Arduino 中的現有陣列來從函式返回陣列。

Arduino 從函式返回陣列

在 Arduino 中,我們可以初始化一個給定大小的陣列;初始化陣列後,我們可以使用函式新增或替換陣列的值。

如果我們想在函式中初始化並建立一個陣列,然後在呼叫函式時返回它,我們必須使用動態記憶體分配,這是使用 malloc()free() 函式完成的,並且我們還必須使用 Arduino 中的指標。

問題是如果我們使用動態記憶體分配從函式建立並返回陣列,結果可能會因為記憶體洩漏和懸空指標而改變。因此,最好使用函式初始化陣列並更改其值,而不是從函式返回整個陣列。

例如,讓我們初始化一個具有恆定整數大小的陣列,然後建立一個函式來更改陣列值。請參閱下面的程式碼。

const int size = 10;
int MyArray[size];

void CreateArray() {
  for (int i = 0; i < size; i++) {
    MyArray[i] = i;
  }
}

void setup() {
  Serial.begin(9600);
  CreateArray();
  for (int i = 0; i < size; i++) {
    Serial.println(MyArray[i]);
  }
}
void loop() {}

輸出:

0
1
2
3
4
5
6
7
8
9

在上面的程式碼中,我們使用常量整數來初始化陣列,因為我們必須使用常量整數來初始化陣列,如果我們不使用常量整數,Arduino 會報錯。我們沒有在陣列中儲存任何值,但是我們也可以在初始化陣列時儲存值。

如果我們不在陣列中儲存任何值,則陣列將使用 NULL 值進行初始化。我們建立了 CreateArray() 函式來將值儲存在陣列中。

CreateArray() 返回型別是 void,這意味著我們不想返回任何東西,因為我們只想將值儲存在陣列中。如果我們想返回一些東西,我們可以改變返回型別;比如,如果我們想返回一個整數值,我們可以定義 int 返回型別。

我們使用 for 迴圈將值儲存在陣列中,但我們也可以手動將值儲存在陣列中。我們在 setup() 函式中呼叫 CreateArray() 函式來更改陣列的值,然後再使用它來列印它們。

我們使用 Arduino 的序列監視器來列印陣列的值,正如我們在輸出中看到的那樣,陣列中存在十個值。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相關文章 - Arduino Function