関数に配列を渡したい場合は、配列変数と共に、配列サイズも渡してあげること!!! (関数はその配列変数が何この要素を持っているのか知らないため)
また、print系の関数でarrayの値が変わるはずがない場合には、ちゃんと"const"をarray変数の前に定義すること。
不意な箇所のミスでarrayの値が変わることを防止してくれる。
あと、プロトタイプ関数宣言のとき、ちゃんとarray[] と定義すること!
void print_array_info (const int array[], size_t size); void set_array_value (int array[], size_t size, int); int main (){ int array[] {1,2,3,4,5}; print_array_info (array, 5); set_array_value (array, 5, 100) print_array_info (array, 5); return 0; } void print_array_info (int array, size_t size){ for (size_t i {0}; i < size; i++) { cout << array[i] << endl; } void set_array_value (int array, size_t size, int value){ for (size_t i{o}; i<size; i++ ) { array[i] = value //every array of value becomes 100 }
ただ面白いのは、array変数を関数に渡すときは、array[0]のアドレスが関数に渡される
array[0]のアドレスがコピーされ関数に渡され、値がセットされれば、たとえ値をセットする関数にreturnがなくvoidであっても、
関数の処理終了後は、セットされた値になっているということ!
上記例だとset_array_value関数の処理後のarrayと値は、100,100,100,100,100になっている!