Arduino 中的 Passing Arrays to Funct

首页 / Arduino入门教程 / Arduino 中的 Passing Arrays to Funct

要将数组参数传递给函数,请指定不带方括号的数组名称,例如,如果已将数组 hourlyTemperatures 声明为该函数,则调用会将数组hourlyTemperatures及其大小传递给函数 modifyArray 。

void modifyArray( int b[], int arraySize )
  • 该语句表明ModifyArray期望在参数b中接收整数数组的地址,并在参数arraySize中接收数组元素的数量。

  • C ++通过引用将数组传递给函数,当被调用函数使用数组名称b时,它引用了调用方中的实际数组。

void modifyArray( int [] , int ) ;

出于文档目的,可以以下方式编写此原型。

void modifyArray( int anyArrayName[], int anyVariableName ) ;

但是,C ++编译器会忽略原型中的变量名称,记住,原型告诉编译器参数的数量和每个参数的类型,以期望参数出现的顺序。

下一个示例中的程序演示了传递整个数组和传递数组元素之间的区别。

Passing Arrays to Functions - 示例

void modifyArray( int [], int ); //数组和大小
void modifyElement( int ); //接收数组元素值

void setup () {
   Serial.begin (9600);
   const int arraySize=5; //数组 a 的大小
   int a[ arraySize ]={ 0, 1, 2, 3, 4 }; //初始化数组 a
   Serial.print ( "Effects of passing entire array by reference:" ) ;
   //输出原始数组元素
   for ( int i=0; i < arraySize ; ++i )
     Serial.print ( a[ i ] ) ;
     Serial.print ("\r" ) ;
     Serial.print ("The values of the modified array are:\n" );
     //输出修改后的数组元素
     for ( int j=0; j < arraySize; ++j )
       Serial.print ( a[j ] ) ;
       Serial.print ("\r" ) ;
       Serial.print ("\r\rEffects of passing array element by value:" );
       Serial.print ( "\ra[3] before modifyElement: " );
       Serial.print ( a[ 3 ] );
       Serial.print ( "\ra[3] after modifyElement: " );
       Serial.print ( a[ 3 ] );
}

void loop () {

}

//在函数 modifyArray 中,“b”指向内存中的原始数组“a”

void modifyArray( int b[], int sizeOfArray ) {
   //将每个数组元素乘以 2
   for ( int k=0 ; k < sizeOfArray ; ++k )
   b[ k ] *= 2;
} 

//结束函数 modifyArray
//在函数 modifyElement 中,“e”是
//从 main 传递的数组元素 a[3]

void modifyElement( int e ) {
   //将参数乘以 2
   Serial.print ( "Value of element in modifyElement: " );
   Serial.print ( ( e *= 2 ) );
} 

//结束函数 modifyElement

执行后代码如下

Effects of passing entire array by reference:01234
The values of the modified array are:01234

Effects of passing array element by value:
a[3] before modifyElement: 3
a[3] after modifyElement: 3
$is not a hexadecimal digit
f is a hexadecimal digit

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

机器学习40讲 -〔王天一〕

零基础学Python -〔尹会生〕

技术管理实战36讲 -〔刘建国〕

编译原理之美 -〔宫文学〕

深入浅出云计算 -〔何恺铎〕

张汉东的Rust实战课 -〔张汉东〕

爱上跑步 -〔钱亮〕

技术面试官识人手册 -〔熊燚(四火)〕

深入浅出可观测性 -〔翁一磊〕

好记忆不如烂笔头。留下您的足迹吧 :)