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

C 언어에서 전체 배열을 함수 인수로 전달하는 방법

배열(Array)이란?

배열은 하나의 공통된 이름으로 저장되는 관련 데이터 항목들의 집합입니다. C 언어에서 배열을 함수에 인수(argument)로 전달하는 방법은 크게 두 가지가 있습니다.

  • 전체 배열을 함수의 인수로 전달하는 방법
  • 개별 요소를 함수의 인수로 전달하는 방법

전체 배열을 함수 인수로 전달하기

  • 전체 배열을 인수로 전달하려면 함수 호출 시 배열 이름만 작성하면 됩니다.

  • 함수 쪽에서 배열을 받으려면 함수 헤더(매개변수 선언부)에 반드시 배열을 선언해야 합니다.

C 언어에서 배열 이름은 배열의 첫 번째 요소를 가리키는 포인터처럼 동작합니다. 따라서 배열을 함수에 전달하면 실제로는 배열의 시작 주소가 전달되며, 이는 참조에 의한 호출(call by reference)과 유사하게 작동합니다. 그 결과, 함수 내부에서 배열 요소를 수정하면 원본 배열에도 그 변경 사항이 그대로 반영됩니다.

예제 1

다음은 사용자로부터 5개의 정수를 입력받아, 전체 배열을 함수에 전달한 후 모든 요소를 출력하는 기본적인 예제입니다.

#include<stdio.h>
main (){
    void display (int a[5]);
    int a[5], i;
    clrscr();
    printf ("enter 5 elements");
    for (i=0; i<5; i++)
       scanf("%d", &a[i]);
    display (a); // 배열 전체를 인수로 전달
    getch( );
}
void display (int a[5]){
    int i;
    printf ("elements of the array are");
    for (i=0; i<5; i++)
       printf("%d ", a[i]);
}

실행 결과

Enter 5 elements
10 20 30 40 50
Elements of the array are
10 20 30 40 50

코드 설명

  • display(a) 호출 시 배열 이름 a만 인수로 넘겨줍니다.

  • 호출받는 함수는 void display(int a[5])와 같이 배열 매개변수를 선언하여 배열을 받습니다.

  • 함수 내부에서는 일반 배열과 동일하게 인덱스를 사용해 각 요소에 접근할 수 있습니다.

예제 2

전체 배열을 함수 인수로 전달하는 개념을 더 확실히 이해하기 위해, 입력받은 값을 한 줄씩 출력하는 또 다른 예제를 살펴보겠습니다.

#include<stdio.h>
main (){
    void number(int a[5]);
    int a[5], i;
    printf ("enter 5 elements\n");
    for (i=0; i<5; i++)
       scanf("%d", &a[i]);
    number(a); // 배열 전체를 인수로 전달
    getch( );
}
void number(int a[5]){
    int i;
    printf ("elements of the array are\n");
    for (i=0; i<5; i++)
       printf("%d\n" , a[i]);
}

실행 결과

enter 5 elements
100
200
300
400
500
elements of the array are
100
200
300
400
500

정리

전체 배열을 함수에 전달할 때는 함수 호출 부분에 배열 이름만 적고, 함수 정의 부분에서는 배열 형태의 매개변수를 선언하면 됩니다. 이때 배열의 크기를 명시하지 않고 int a[]처럼 선언해도 무방하며, 필요하다면 별도의 크기 매개변수를 함께 전달하는 것이 좋습니다. 참고로 위 예제의 clrscr()getch()는 구형 Turbo C 컴파일러에서 제공되는 함수이므로, GCC 등 표준 환경에서는 제거하고 사용하시기 바랍니다.