반응형
안녕하세요,
오늘은 가변 인자를 이용한 사용자 정의 함수를 만드는 방법과 사용 예시에 대해 포스팅 해보도록 하겠습니다.
가변 인자
가변 인자를 이용하면 사용자가 입력 파라미터에 구애없이 사용자 정의 함수를 만들 수 있는 장점이 있습니다.
가변 인자를 이용하기 위해선 va_list, va_arg, va_start, va_end, ... 등의 타입이 필요한데요, 이는 C에서는 stdarg.h, C++에서는 cstdarg에 정의되어있습니다.
C 언어를 이용해 가변 인자를 이용한 사용자 정의 함수 예시를 보여드리겠습니다.
반응형
사용자 정의 함수 예시
총 입력 받은 파라미터들의 개수를 알기 위해 첫 번째 인자에는 파라미터 총 개수를 입력하도록 했습니다.
예시
#include <stdarg.h>
#include <stdio.h>
int user_sum(int, ...);int main(){// sum(total cnt, a, b, ...);printf("1 + 2 = %d\n", user_sum(2, 1, 2));printf("1 + 2 + 3 + 4 + 5 = %d\n", user_sum(5, 1, 2, 3, 4, 5));}
int user_sum(int args, ...){int total_sum = 0;int var;
// stack pointer for the variadic argument listva_list list;
// Set the pointer of the first variadic argumentva_start(list, args);
// Total variadic argument count is saved in argsfor (int i = 0; i < args; i++){// Get each variadic argument from the listvar = va_arg(list, int);total_sum += var;}
// Initialize the stack pointer as NULLva_end(list);
return total_sum;}
결과
1 + 2 = 3
1 + 2 + 3 + 4 + 5 = 15
지금까지 가변 인자를 이용한 사용자 정의 함수를 만드는 방법과 사용 예시였습니다.
읽어주셔서 감사합니다.
반응형
'▶ 프로그래밍 [Programming] > ▷ C 언어 [C Language]' 카테고리의 다른 글
[C 언어] 사전 정의 매크로 (__DATE__, __TIME__, __FILE__, __LINE__, STDC__, __FUNCTION__) (0) | 2023.04.07 |
---|---|
[C 언어] 가변 인자를 이용한 디버그 함수 만들기 (va_list, va_start, va_end, vsprintf) (0) | 2021.11.26 |
[C 언어] 버블소트(bubble sort)를 이용한 정렬 사용 예시 (example code) (0) | 2021.11.24 |
[C 언어] 함수 포인터를 이용한 콜백함수(callback function) 사용 예시 (example code) (0) | 2021.11.23 |
[C 언어] 퀵소트(qsort)를 이용한 배열, 구조체 정렬 사용 예시 (example code) (0) | 2021.11.21 |
댓글