배열과 함수
Coddy C++ 여정의 기초 섹션에 포함된 레슨 — 74개 중 62번째.
배열은 전체 배열로서 함수에 직접 전달될 수 없습니다. 배열을 함수에 전달하려고 하면, 배열은 첫 번째 요소를 가리키는 포인터로 "퇴화(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);직접 해보기
이 레슨에는 코드 챌린지가 없습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.