Just in case you needed to, you can wrap an array into a struct/class and pass it by value to a function:template<typename T, int N>struct array { T value[N]; T & operator[](int i) { return value[i]; }};template<typename T, int N>void passByValue(array<T, N> a) { cout << "Value in function:" << endl; for (int i = 0; i < N; i++) a[i] = 1, cout << a[i] << endl; // prints 1's}int main() { const int N = 5; array<int, N > a; for (int i = 0; i < N; i++) a[i] = 0; passByValue(a); cout << "Value after function call:" << endl; for (int i = 0; i < N; i++) cout << a[i] << endl; // prints 0's return 0;}