要将数组参数传递给函数,请指定不带方括号的数组名称,例如,如果已将数组 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 ++编译器会忽略原型中的变量名称,记住,原型告诉编译器参数的数量和每个参数的类型,以期望参数出现的顺序。
下一个示例中的程序演示了传递整个数组和传递数组元素之间的区别。
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
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)