Arduino 從函式返回陣列
Ammar Ali
2023年10月12日
本教程將討論通過修改 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