컴퓨터/C
C언어에서 함수를 사용하는 법에 대해서 어느 정도 익숙해지셨을 것이라 생각됩니다. 다양한 함수들을 보다 보면 함수의 원형에...으로 표현된 것을 보셨을 것입니다. 이런 형태의 표현을 가변 인자 , 가변 매개변수라고 합니다.
대표적으로 printf함수의 원형을 한번 살펴 보도록 하겠습니다.
int printf(const char *format,...);
함수의 원형은 위와 같은 형태로 되어있으며 우리가 printf함수를 호출하여 사용할 때에도 인자의 수가 정해지지 않습니다. 이렇게 인자의 개수가 정해지지 않았을 때 사용하는 것이 바로 가변 인자(Variable argument)라고 부릅니다.
함수에서 가변 인자를 선언하기 위해서는... 을 이용합니다.
void func(int numargs , ...) // ...이 가변인자라는 표현
{
소스코드
}
int mina()
{
func(1,10); // numargs = 1 , 가변 인자 1개 10
func(2,10,20); // numargs = 2 , 가변 인자 2개 10 , 20
return 0;
}
위의 소스코드처럼 가변인자라는 표현은... 을 통해 정의 내릴 수 있습니다.
또한 함수의 호출을 할 때에 고정된 인자들을 넣은 후에 원하는 개수만큼 가변 인자를 넣을 수 있게 됩니다.
함수에 가변인자를가변 인자를 정의하여 그 가변 인자를 사용하기 위해서는 C언어에서 제공하는 가변 인자를 제어하기 위한 라이브러리를 추가해 주어야 합니다. 주요 내용은 아래와 같습니다.
사실 위의 내용보다 실습 코드를 이용해 직접 제어를 해보는 것이 더 효율적일 것입니다.
#include <stdio.h>
#include <stdarg.h>
void func(int numargs, ...)
{
//가변 인자들을 담을 목록 포인터 만들기
va_list numlist;
//가변 인자 목록 포인터에 들어온 가변인자 셋팅하기
va_start(numlist, numargs);
//가변 인자의 수만큼 반복하면서 가변인자 탐색해보기
for (int i = 0; i < numargs; i++)
{
// 가변 인자를 담은 목록 포인터에서 int크기만큼 값을 꺼내서 확인
printf("%d 번째 가변인자 : %d \n", i + 1, (va_arg(numlist, int)));
}
//사용이 끝난 가변인자 목록 포인터의 소멸
va_end(numlist);
}
int main()
{
printf("함수 실행 1 \n");
func(3, 20, 30, 40);
printf("함수 실행 2 \n");
func(5, 1, 2, 3, 4, 5);
return 0;
}
C 언어 - 실습 - 학생관리 프로그램 Ver4.1(파일로 저장하기) (0) | 2021.07.28 |
---|---|
C 언어 - 파일다루기 5 - 파일포인터(파일에서의 위치) (0) | 2021.07.27 |
C 언어 - 파일 다루기3 - 파일 출력(파일의 데이터 읽기) (0) | 2021.07.25 |
C 언어 - 파일다루기 4 - 파일 입력 (파일에 데이터 넣기) (0) | 2021.07.22 |
C 언어 - 파일 다루기2 (fopen / fclose) (0) | 2021.07.20 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet