Menu
Coddy logo textTech

配列と関数

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);

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン