配列と関数
CoddyのC++ジャーニー「基礎」セクションの一部 — レッスン 62/74。
配列を完全な配列として直接関数に渡すことはできません。配列を関数に渡そうとすると、それは最初の要素へのポインタに「減衰(decay)」します。
例えば:
int numbers[5] = {1, 2, 3, 4, 5};
void processArray(int arr[]) {
int size = std::size(arr);
}std::size(arr) は実際の配列のサイズを返しません。ここでの arr は配列ではなく、実際にはポインタです。ポインタについては、次のコースで学習します。
そのため、配列を関数に渡す際には、通常、サイズを別のパラメータとして渡す必要があります:
void processArray(int arr[], int size) {
// これで、sizeパラメータを使用して安全に配列を操作できます
}関数の呼び出し方は以下の通りです:
int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);また、関数で配列を返すことはできません:
int[] processArray(int arr[]) {
return arr;
}これは不正です。代わりに * 構文を使用してください:
int* processArray(int arr[]) {
return arr;
}
int* newArr = processArray(arr);スター (*) 構文は、次のコースで説明するポインタを指します。
チートシート
配列を直接関数に渡すことはできません。配列は最初の要素へのポインタに「減衰(decay)」します。
配列を関数に渡すときは、サイズを別のパラメータとして渡す必要があります:
void processArray(int arr[], int size) {
// sizeパラメータを使用して配列を操作する
}
int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);配列を関数から直接返すことはできません。代わりにポインタ構文を使用してください:
int* processArray(int arr[]) {
return arr;
}
int* newArr = processArray(arr);自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。