미리 보면 좋은 내용
va_list 자료형이란?
C언어에서 "가변 인자 함수(인자 개수가 정해져 있지 않은 함수)"를 다루기 위한 자료형
Why Used?
보통 함수는 인자 개수가 고정되어 있지만 인자 개수가 계속 바뀔 때 사용하기 위한 가변 인자 함수
int add(int a, int b); // 인자 개수 2개 고정
printf("a=%d b=%d", a, b); // 인자 개수 3개
printf("a=%d b=%d c=%d", a, b, c); // 인자 개수 4개
핵심 개념
va_list = 가변 인자들을 순회하기 위한 "포인터/상태 객체"
즉, 스택에 쌓인 인자들을 하나씩 꺼내기 위한 도구
스택(또는 레지스터)에 있는 인자들을 순차적으로 읽는 구조
헤더 파일
#include <stdarg.h>
사용 예시
void func(int count, ...) {
va_list ap; // 1. 가변 인자 리스트 선언
va_start(ap, count); // 2. 시작 (마지막 고정 인자 전달)
for (int i = 0; i < count; i++) {
/**
* 만약 va_arg(ap, double)로 사용 -> 실체는 int
* UB(undefined Behavior 에러 발생)
*/
int value = va_arg(ap, int); // 3. 하나씩 꺼냄 (반드시 타입 정보 필수)
printf("%d\n", value);
}
va_end(ap); // 4. 종료
}
'정글캠프-WIL > C언어' 카테고리의 다른 글
| [C언어] - 운영체제 ptov() 함수 (0) | 2026.04.26 |
|---|---|
| [C 언어] - memset() 함수 (0) | 2026.04.25 |
| [C언어] - connect() 함수 (0) | 2026.04.23 |
| [C언어] - accept() 함수 (0) | 2026.04.23 |
| [C언어] - listen() 함수 (0) | 2026.04.23 |