// https://arduinogetstarted.com/faq/how-to-pass-array-to-function-in-arduino
// https://academy.programmingelectronics.com/pass-array-to-function-in-arduino/
// https://wokwi.com/projects/353414726659848193
int array_1[] = {1, 2};
int length_1 = sizeof(array_1) / sizeof(array_1[0]);
int array_2[] = {3, 4, 5, 6};
int length_2 = sizeof(array_2) / sizeof(array_2[0]);
byte thisOne = 1;
void setup() {
Serial.begin(115200);
if (thisOne == 0) {
// pass by ARRAY type
passByArrayType(array_1, length_1);
passByArrayType(array_2, length_2);
} else {
// pass by POINTER type
int pointer_1 = &array_1; // can not pass &array_1 "warning: invalid conversion from 'int' to 'int*'"
int pointer_2 = &array_2; // can not pass &array_2 "warning: invalid conversion from 'int' to 'int*'"
passByPointerType(pointer_1, length_1); // pass the address of array_1 // warning: invalid conversion from 'int' to 'int*' [-fpermissive]
passByPointerType(pointer_2, length_2); // pass the address of array_2 // warning: invalid conversion from 'int' to 'int*' [-fpermissive]
}
}
void loop() {
}
void passByArrayType(int myArray[], int length) {
for (byte i = 0; i < length; i++) {
Serial.print(myArray[i]);
}
Serial.println();
}
void passByPointerType(int* myPointer, int length) { // note: initializing argument 1 of 'void passByPointerType(int*, int)'
for (byte i = 0; i < length; i++) {
Serial.print(*(myPointer + i));
}
Serial.println();
}