C++で配列を引数として渡す方法は何ですか?
C++で配列を関数のパラメータとして渡す方法はいくつかあります:
- ポインタを渡す:関数に配列の先頭アドレスをポインタとして渡すことができます。関数内でポインタを使って配列の要素にアクセスします。例のコードは以下の通りです:
void foo(int* arr, int size) {
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
foo(arr, size);
return 0;
}
- 参照の伝達:関数に配列を参照として渡すことができます。関数内で配列の要素にアクセスするためには、引き続き配列名を使用できます。以下に示すコード例をご覧ください:
void foo(int (&arr)[5]) {
for (int i = 0; i < 5; i++) {
cout << arr[i] << " ";
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
foo(arr);
return 0;
}
- テンプレートパラメータを使用すると、異なる長さの配列に対応できるようになります。以下に示すコード例を参考にしてください。
template<typename T, size_t size>
void foo(T (&arr)[size]) {
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
}
int main() {
int arr1[] = {1, 2, 3, 4, 5};
foo(arr1);
double arr2[] = {1.1, 2.2, 3.3, 4.4, 5.5};
foo(arr2);
return 0;
}
関数のパラメーターとして配列を使用する場合、渡されるのは配列のコピーであり、配列内の要素を変更しても元の配列に影響を与えません。関数内で元の配列を変更したい場合は、ポインターか参照をパラメーターとして使用することができます。