개요
C 언어에서 배열의 개별 요소를 함수의 인수(argument)로 전달하려면, 함수를 호출할 때 배열 이름 전체가 아니라 첨자(subscript)가 붙은 배열 요소(예: a[0], a[4])를 직접 지정해야 합니다.
반대로 호출된 함수 쪽에서는 전달된 값을 받기 위해 일반(단순) 변수를 사용합니다. 즉, 함수 정의부의 매개변수는 배열 형태가 아닌 int형 단순 변수로 선언됩니다.
예제 1: 첫 번째 요소와 마지막 요소 전달하기
다음 예제는 크기가 5인 배열을 선언하고, 사용자로부터 5개의 값을 입력받은 뒤 첫 번째 요소(a[0])와 마지막 요소(a[4])만 display() 함수에 개별 인수로 전달하는 프로그램입니다.
#include<stdio.h>
main (){
void display (int, int);
int a[5], i;
clrscr();
printf ("enter 5 elements");
for (i=0; i<5; i++)
scanf("%d", &a[i]);
display (a[0], a[4]); // 개별 인수를 사용하여 함수 호출
getch();
}
void display (int a, int b){ // 개별 인수를 받는 호출된 함수
printf ("first element = %d", a);
printf ("last element = %d", b);
}실행 결과
Enter 5 elements 10 20 30 40 50 First element = 10 Last element = 50
예제 2: 여섯 개 요소 중 첫 요소와 마지막 요소 전달하기
아래 예제는 크기가 10인 배열에 6개의 값을 입력받은 후, a[0]과 a[5]를 arguments() 함수에 개별적으로 전달하는 또 다른 사례입니다.
#include<stdio.h>
main (){
void arguments(int,int);
int a[10], i;
printf ("enter 6 elements:\n");
for (i=0; i<6; i++)
scanf("%d", &a[i]);
arguments(a[0], a[5]); // 개별 인수를 사용하여 함수 호출
getch();
}
void arguments(int a, int b){ // 개별 인수를 받는 호출된 함수
printf ("first element = %d\n", a);
printf ("last element = %d\n", b);
}실행 결과
enter 6 elements: 1 2 3 4 5 6 first element = 1 last element = 6
핵심 정리
함수 호출 시: 배열명이 아니라 첨자가 붙은 개별 요소(예: a[0], a[4])를 인수로 사용합니다.
함수 정의 시: 전달받은 값을 저장하기 위해 단순 변수(int a, int b)를 매개변수로 선언합니다.
참고: 이 방식은 값에 의한 호출(call by value)에 해당하므로, 함수 내부에서 매개변수 값을 변경하더라도 원본 배열의 값은 영향을 받지 않습니다.