Also keep in mind that arrays are not passed by value (using copies of its arguments) they are passed by reference (using the variables the calling function uses). That is to say, any change you make to items in the array in a function will be reflected in the same array that the calling function passed into it
This is
almost correct

. In C and C++ "an array is a pointer". In this case an array was passed as parameter, i.e. a pointer was passed ---- that pointer is passed by value and not by reference.
// a function taking a single integer by value
void func1(int by_value) {}
// a function taking a single integer by reference
void func2(int& by_ref) {}
// a function taking a single integer by pointer (the pointer is passed by value)
void func3(int* by_pointer) {}
// a function taking a single integer by pointer (the pointer is passed by reference)
void func4(int*& by_pointer_ref) {}
// function taking an array (=pointer by value) and length of array (as int by value)
void func5(int array[], int arrayVals){}
// function taking a pointer (=array) and length of array (as constant int by reference)
void func6(int* array, const int& arrayVals){}
:
