// https://arduinogetstarted.com/faq/how-to-pass-array-to-function-in-arduino
// https://academy.programmingelectronics.com/pass-array-to-function-in-arduino/
// https://www.geeksforgeeks.org/cpp/cpp-arrays/
// https://publications.gbdirect.co.uk/c_book/chapter5/pointers.html
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; // 0 array type, 1 pointer type
void setup() {
Serial.begin(115200);
if (thisOne == 0) {
// pass an array by ARRAY type
passByArrayType(array_1, length_1);
passByArrayType(array_2, length_2);
} else {
// pass an array by POINTER type
int *pointer_1 = array_1;
int *pointer_2 = array_2;
passByPointerType(pointer_1, length_1);
passByPointerType(pointer_2, length_2);
}
}
void loop() {
}
void passByArrayType(int myArray[], int length) {
Serial.print("BY ARRAY TYPE ");
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)'
Serial.print("BY POINTER TYPE ");
for (byte i = 0; i < length; i++) {
Serial.print(*(myPointer + i));
}
Serial.println();
}