# 가변인자 (variadic arguments)
: 매번 함수에 들어가는 인수의 개수가 변하는 것
- 최소 한 개의 정해진 자료형의 매개변수가 필요하다. (변수값을 넣을 문자열)
- va_list : 가변 인자 목록
#include <stdarg.h>
va_list ap;
- 가변 인자의 메모리 주소를 저장하는 포인터
- va_start : 가변 인자를 가져올 수 있도록 포인터를 설정
#include <stdarg.h>
void va_start(va_list ap, last);
- ap의 시작 위치를 함수에 주어진 마지막 고정 인자(last) 다음으로 초기화
- 가변 인자에 접근하기 전에 va_start를 호출해야한다. (일반적으로 함수 시작부분에 호출)
- va_end : 가변 인자 처리가 끝났을 때 포인터를 NULL로 초기화
#include <stdarg.h>
void va_end(va_list ap);
- 함수가 끝나기 전에 반드시 사용
- va_arg : 가변 인자 포인터에서 특정 자료형 크기만큼 값을 가져온다.
#include <stdarg.h>
TYPE va_arg(va_list ap, TYPE);
- 값을 읽고나서 값의 크기만큼 포인터의 주소를 옮긴다. (다음 가변인자로 이동)
- 이때 va_arg가 읽을 수 있는 값의 최소 크기는 int(4byte)이며 char 형의 값을 읽고 싶은 경우 int크기만큼 읽고 char로 형변환한다.
- va_copy : 가변 인자 목록을 복사
#include <stdarg.h>
void va_copy(va_list ap_copy, va_list ap);
- ap에 저장된 가변 인자를 ap_copy로 복사
'42seoul > circle-1' 카테고리의 다른 글
[ born2beroot ] 1. 가상머신 (Virtual Box) (0) | 2022.02.04 |
---|---|
[ born2beroot ] 0. 과제 이해하기 (0) | 2022.02.04 |
[ ft_printf ] 3. printf의 버퍼 관리 방법 (표준 입출력과 버퍼 | 스트림과 데이터 이동) (0) | 2022.01.15 |
[ ft_printf ] 1. printf (0) | 2021.12.29 |
[ printf ] 0. 문제 이해하기 (0) | 2021.12.23 |
댓글