Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 배열을 함수에 전달하는 방법


C++에서는 배열 전체를 그대로 함수의 인수(argument)로 전달하는 것이 허용되지 않습니다. 대신, 인덱스 없이 배열의 이름만 지정하면 배열을 가리키는 포인터를 함수에 전달할 수 있습니다.

1차원 배열을 함수의 인수로 전달하고 싶다면, 함수의 형식 매개변수(formal parameter)를 아래 세 가지 방법 중 하나로 선언해야 합니다. 세 가지 선언 방식 모두 컴파일러에게 '정수형 포인터를 전달받는다'는 동일한 의미를 전달하기 때문에 결과적으로 같은 방식으로 동작합니다.

배열을 함수에 전달하는 3가지 방법

1. 포인터 형태의 매개변수

void myFunction(int *param) {
    // Do something
}

2. 크기가 지정된 배열 형태의 매개변수

void myFunction(int param[10]) {
    // Do something
}

3. 크기가 지정되지 않은 배열 형태의 매개변수

void myFunction(int param[]) {
    // Do something
}

예제 코드

위 방법들은 실제로 다음과 같이 활용할 수 있습니다.

#include<iostream>
using namespace std;
void arrayAccept(int arr[]) {
    cout << "first element is: " << arr[0];
}
int main() {
    int arr[2];
    arr[0] = 0;
    arr[1] = 1;
    arrayAccept(arr);
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 출력이 나타납니다.

first element of array is 0

이처럼 C++에서 배열을 함수에 전달할 때는 실제 배열 복사본이 아니라 배열의 시작 주소(포인터)가 전달된다는 점을 기억하는 것이 중요합니다. 따라서 함수 내부에서 배열 요소를 수정하면 원본 배열에도 그 변경 사항이 그대로 반영됩니다.