가변인자
함수에서 가변 인자를 정의할 땐느 고정 매개변수가 한 개 이상 있어야함
고정 매개 변수뒤에 ...을 붙여야 한다.
반환값 자료형 함수이름(자료형 고정매개변수, ...) { }
#include <stdio.h>
#include <stdarg.h> //va_list, va_start, va_arg, va_end가 정의된 헤더 파일
void printNumbers(int args, ...) //args는 고정매개변수, ...로 가변 인자를 설정
{
va_list ap; //가변 인자 목록 포인터 각 가변인자의 메모리 주소를 가질수 있음
va_start(ap, args); //가변인자 포인터에 첫번째 가변인자의 주소를 전달
for (int i = 0; i < args; i++)
{
int num = va_arg(ap ,int); //int 크기만큼 가변 인자 목록 포인터에서 값을 가져옴
printf("%d", num);
}
va_end(ap); // 가변 인자 목록 포인터를 null로 초기화
}
공용체
구조체와 비슷하다 하지만 메모리를 어떻게 활용하느냐에 차이가 있음
구조체는 멤버 변수마다 각각의 메모리를 할당해주지만,
공용체는 멤버변수 중 가장 메모리 할당량이 큰 변수 하나의 공간만 할당하고 그 메모리 공간을 서로 공유