使用 Arduino 和 C++ 在一個函數中輸出帶有數組的參數

班安

我在函數中使用各種參數進行初始化時遇到問題。如果我創建了一個數組,它就可以工作int params [] = {...}但是,如果我想將參數直接寫入函數中,則不起作用。

declaration (在 .h 中)

void phase_an(int led[]);

in the .cpp

void RS_Schaltung::phase_an(int led[])
{
  for (size_t i = 0; i < LEN(led); i++) {
    digitalWrite(led[i], HIGH);
  }
}

如果我嘗試這種方式,它將不起作用。我希望它是那樣的。但我在互聯網上找不到任何關於它的信息。...:in the Arduino sketch:

RS.phase_an(RS.ampelRot, RS.ampelGelb, ..... );    <--- is there a way to do it like that?

讓我驚訝的是它是這樣工作的:

int p_an [5] = {RS.ampelRot, RS.ampelGelb, RS.ampelGruen, RS.rot, RS.gelb};
...................
RS.phase_an (p_an);

有人有建議嗎?

克里斯托夫

有使函數接受可變數量的參數的幾種方法在這裡

但是,在您當前的代碼中存在一個問題:當您將未知大小的本機數組作為函數的參數(例如void f(int a[])傳遞時,該參數將被管理為指向數組的指針,並且此函數內部無法知道該數組的實際長度。我不知道LEN()如何定義的,但它在您的代碼中運行不佳的可能性很高。

一個更安全、更實用的替代方法是使用 avector<int>代替:

#include <iostream>
#include <vector>
using namespace std;

void f(const vector<int>& a){
    for (int i=0; i<a.size(); i++) {
        cout<<a[i]<<" ";
    }
    cout<<endl; 
}

int main() {
    vector<int> test={1,2,3,4}; 
    f(test); 
    f({1,2,3,4});
    return 0;
}

在這種情況下,您可以在函數調用中的括號之間傳遞多個值(例如({RS.ampelRot, RS.ampelGelb, RS.ampelGruen, RS.rot, RS.gelb}),C++ 會自動將其轉換為向量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用函數、“For”循環和 Excel VBA 中的兩個現有數組輸出值數組?

有沒有辦法讓一個函數可以使用另一個函數的變量而無需在 C++ 中傳遞任何參數?

C 帶有打印和數組的反向數字

如何使用帶有事件參數和參數的函數添加和刪除事件偵聽器?

Docker 使用帶一個和兩個連字符的參數運行

Python:如何對 3d 數組中的值求和,其中最後一個數組是使用函數映射和求和的字典

我想在c#中使用foreach循環一個一個讀取帶有特定json對像數組的json文件數據

使用函數式 React 和 React-Tables 將函數傳遞給另一個組件

有沒有辦法對從數組中查找的多個值求和,使用單個輸入單元格和單個輸出單元格?

C 和 Python 中遞歸函數的不同輸出

如何使用具有多個結果的函數和組

編寫一個帶有 2 個參數(字符串和整數)的函數,它應該像我在描述字段中寫的那樣打印出一個正方形的字符

使用reduce的具有數組輸出的特定鍵的累積總和

我可以在 C++ 中將函數指針分配給帶有 const 參數的函數嗎?

如何在javascript中的同一個函數中同時使用map和reduce?

如何使用 C# 從表中的二維數組輸出值

將 SQLITE SELECT ... IN 語句與 C# 中的字符串數組一起使用會給出數組中具有多個值的空結果

在 C++ 函數中使用 const 和 &

使用範圍和數組函數時如何排除第一行?

使用C ++在RPi和Arduino之间进行串行通信

使用 c 在 putty 中只取一個命令行參數

無法在 C 中打印返回數組指針的函數的輸出

帶有可選參數的 C++ 和 MSVC #define 指令

如何使用帶有多個參數的 mapply 複製函數來計算方法的功效?

如何使用帶有兩個參數的函數進行字符串插值 javaScript

c++ 在具有 set 和 get 函數的類中使用 bool

使用 cout 函數、for 和 if-else 語句在 C++ 中的鋸齒形模式

React Typescript 101:使用帶有常量列表和函數的 Typescript

使用 C 中的用戶定義函數查找數組中元素的頻率