variadic arguments - KimTaebin-ai/study_posts GitHub Wiki

κ°€λ³€μΈμžλž€

이름 κ·ΈλŒ€λ‘œ 'μΈμžκ°€ λ³€ν•  수 μžˆλ‹€' λŠ” μ˜λ―Έμ΄λ‹€.

인자의 νƒ€μž…κ³Ό κ°œμˆ˜κ°€ 정해지지 μ•ŠλŠ”λ‹€.

C μ–Έμ–΄μ—μ„œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ‹€λ³΄λ©΄ 맀개 λ³€μˆ˜μ˜ κ°œμˆ˜κ°€ μ •ν•΄μ Έμžˆμ§€ μ•Šμ€ ν•¨μˆ˜κ°€ μžˆλŠ”λ° λŒ€ν‘œμ μΈ 예둜 printfκ°€ μžˆλ‹€.

일반적인 pritfλ₯Ό μ‚¬μš©ν• λ•Œ, printf("int == %d, double == %lf, char == %c, str == %s", i, j, k, l) 이와 같이 첫 인자 λ¬Έμžμ—΄μ„ μ œμ™Έν•˜λ©΄ λ§ˆμŒλŒ€λ‘œ μž‘μ„±ν•  수 μžˆλ‹€.

int	ft_printf(const char *bs, ...)
{
	va_list	ap;
	int		answer;

	answer = 0;
	va_start(ap, bs);
	answer = check(bs, ap);
	va_end(ap);
	return (answer);
}

printf의 ν•¨μˆ˜ μ›ν˜•μ€ int printf(const char *format, ...)

μ΄λ ‡κ²Œ 상황에 따라 ν•¨μˆ˜μ— 인자의 κ°œμˆ˜κ°€ λ‹€λ₯΄κ²Œ ν• λ‹Ήλ˜μ–΄λ„ μ²˜λ¦¬ν•  수 있게 ν•΄μ£ΌλŠ” 것이 κ°€λ³€ μΈμžμ΄λ‹€.

κ°€λ³€ 인자λ₯Ό ν¬ν•¨ν•œ ν•¨μˆ˜μ—λŠ” 두 μ’…λ₯˜μ˜ μΈμžκ°€ μš”κ΅¬λœλ‹€.

  • ν•„μˆ˜ 인자
  • 선택적 인자

μ—¬κΈ°μ„œ λ§ν•œ 선택적 μΈμžλŠ” κ°€λ³€ 인자인데, κ°€λ³€ 인자λ₯Ό λ°›κΈ° μœ„ν•΄μ„  사전에 ν•„μˆ˜ μΈμžκ°€ 무쑰건 μš”κ΅¬λœλ‹€. 선택적 인자인 κ°€λ³€ μΈμžλŠ” 말 κ·ΈλŒ€λ‘œ 인자의 μˆ˜κ°€ μ •ν•΄μ Έ μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 선택적 인자λ₯Ό λ¨Όμ € λ°›κ²Œ 되면 ν•¨μˆ˜μ˜ μ›ν˜•μ—μ„œ μ–΄λŠ 인자λ₯Ό ν•„μˆ˜ 인자둜 받은 것인지 μ•Œ 수 μ—†κΈ° λ•Œλ¬Έμ—, ν•„μˆ˜ 인자λ₯Ό λ¨Όμ € 받은 λ‹€μŒ 선택적 인자λ₯Ό λ°›λŠ” 것을 μ›μΉ™μœΌλ‘œ ν•œλ‹€.