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

C 언어에서 배열 전체를 함수 인수로 전달하는 방법 완벽 가이드

배열(Array)은 여러 개의 관련된 데이터 항목들을 하나의 공통된 이름으로 저장하는 자료구조입니다. C 언어에서는 배열을 통째로 함수에 인수로 전달할 수 있으며, 이번 글에서는 그 방법을 예제와 함께 자세히 알아보겠습니다.

배열 선언하기

배열을 선언하는 기본 문법은 다음과 같습니다.

datatype array_name [size];

예를 들어 정수형 배열을 선언하려면 다음과 같이 작성합니다.

int a[5];

배열 초기화하기

배열은 크게 두 가지 방법으로 초기화할 수 있습니다.

  • 컴파일 시간(Compile time) 초기화
  • 런타임(Runtime) 초기화

또한 배열은 선언과 동시에 초기화할 수도 있습니다.

int a[5] = {100, 200, 300, 400, 500};

함수란 무엇인가?

함수(Function)는 특정하고 명확하게 정의된 작업을 수행하는 독립적인 코드 블록입니다. C 언어에서 배열을 함수의 인수로 전달하는 방법은 두 가지가 있습니다.

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

이 글에서는 첫 번째 방법, 즉 배열 전체를 함수 인수로 전달하는 방법을 중점적으로 살펴보겠습니다.

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

배열 전체를 함수에 전달할 때는 다음 두 가지 규칙을 기억해야 합니다.

  • 전달: 함수 호출 시 배열 이름만 인수로 넘기면 됩니다. 배열 이름은 곧 배열의 시작 주소를 의미합니다.
  • 수신: 함수 헤더(매개변수 부분)에서 배열 형태로 이를 받아야 합니다.

예제 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); // 배열 이름 '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

예제 2: 배열 요소 역순으로 출력하기

다음은 배열에 입력된 요소들을 역순(reverse order)으로 출력하는 C 프로그램입니다.

#include<stdio.h>
void main(){
    // 배열 선언 - 런타임 초기화 //
    int array[5],i;
    void rev(int array[5]);
    // 배열에 요소 입력받기 //
    printf("Enter elements into the array: 
");
    // for 반복문 //
    for(i=0;i<5;i++){
        // 사용자 입력 읽기 //
        printf("array[%d] :",i);
        scanf("%d",&array[i]);
    }
    // 배열 요소를 역순으로 출력 //
    printf("The elements from the array displayed in the reverse order are : 
");
    rev(array); // 배열 이름을 사용해 배열 전체 전달
    getch();
}
void rev(int array[5]){ // 배열 전체 수신
    int i;
    for(i=4;i>=0;i--){
        // 결과 출력 //
        printf("array[%d] :",i);
        printf("%d
",array[i]);
    }
}

실행 결과

위 프로그램을 컴파일하여 실행하면 다음과 같은 결과가 출력됩니다.

Enter elements into the array:
array[0] :23
array[1] :34
array[2] :12
array[3] :56
array[4] :12
The elements from the array displayed in the reverse order are:
array[4] :12
array[3] :56
array[2] :12
array[1] :34
array[0] :23

정리

C 언어에서 배열 전체를 함수에 전달하는 것은 사실 배열의 시작 주소를 넘기는 방식으로 동작합니다. 따라서 함수 내부에서 배열 요소를 수정하면 원본 배열에도 그 변경이 반영됩니다. 함수 호출 시에는 배열 이름만 전달하고, 함수 정의 쪽에서는 매개변수를 배열 형태로 선언하면 됩니다. 이 두 가지 원칙만 기억하면 배열을 활용한 다양한 프로그래밍이 훨씬 수월해집니다.