가변 길이 인자를 사용하는 방법은 무엇인가요?

가변 길이 인자(Variable-length Arguments)는 함수에 전달하는 인자의 개수가 고정되어 있지 않고, 필요에 따라 여러 개 또는 0개 이상의 인자를 전달할 수 있도록 하는 기능입니다.

이를 통해 함수 호출 시 보다 유연하게 인자를 처리할 수 있습니다.

프로그래밍 언어마다 가변 길이 인자를 처리하는 문법이 다르지만, 대표적인 언어들에서 사용하는 방법을 중심으로 설명하겠습니다.

--- 1. Python에서 가변 길이 인자 Python에서는 `*args`와 ` kwargs` 문법을 사용하여 위치 인자와 키워드 인자를 각각 가변 길이로 받을 수 있습니다.

1-1. 위치 인자 가변 길이: *args ```python def func(*args): for arg in args: print(arg) func(1, 2, 3) 출력: 1 2 3 ``` - `*args` 는 함수 내에서 튜플(tuple) 형태로 전달된 인자들을 담습니다.

- 인자의 개수에 제약이 없고, 0개도 가능합니다.

1-2. 키워드 인자 가변 길이: kwargs ```python def func( kwargs): for key, value in kwargs.items(): print(f"{key} = {value}") func(a=1, b=2) 출력: a = 1 b = 2 ``` - ` kwargs` 는 딕셔너리(dictionary) 형태로 전달된 키워드 인자를 받습니다.

- 키=값 형태의 인자들을 여러 개 전달할 수 있습니다.

1-3. *args와 kwargs 함께 쓰기 ```python def func(*args, kwargs): print("args:", args) print("kwargs:", kwargs) func(1, 2, a=3, b=4) 출력: args: (1, 2) kwargs: {'a': 3, 'b': 4} ``` --- 2. C언어에서 가변 길이 인자 C언어에서는 `` 헤더에 정의된 매크로들을 사용하여 가변 인자를 처리합니다.

```c include include void print_numbers(int count, ...) { va_list args; va_start(args, count); for(int i = 0; i < count; i++) { int num = va_arg(args, int); printf("%d\n", num); } va_end(args); } int main() { print_numbers(3, 10, 20, 30); return 0; } ``` - `va_list` : 인자 리스트를 가리키는 타입 - `va_start(args, last_fixed_arg)` : 가변 인자 처리를 시작, `last_fixed_arg`는 고정 인자 중 마지막 인자 - `va_arg(args, type)` : 다음 가변 인자를 `type`으로 가져오기 - `va_end(args)` : 가변 인자 처리 종료 --- 3. Java에서 가변 길이 인자 Java는 메서드 매개변수에서 `...` 문법으로 가변 인자를 선언할 수 있습니다.

```java public class Main { public static void printNumbers(int... numbers) { for (int num : numbers) { System.out.println(num); } } public static void main(String[] args) { printNumbers(1, 2, 3); } } ``` - `int... numbers`는 여러 개의 `int` 값을 배열로 받을 수 있음 - 메서드 내에서는 `numbers`가 배열처럼 처리됨 --- 4. 요약 | 언어 | 문법 / 키워드 | 가변 인자 형태 | 설명 | |--------|---------------------|-----------------------|---------------------------------------| | Python | `*args`, ` kwargs` | 위치 인자, 키워드 인자 | 튜플과 딕셔너리로 가변 인자 받음 | | C | `` (va_list) | 순서 인자 | 매크로로 인자 하나씩 꺼내서 처리 | | Java | `int... args` | 배열 형태 인자 | 가변 인자를 배열처럼 받음 | --- 가변 길이 인자는 함수/메서드 호출 시 인자의 개수를 유연하게 처리해야 할 때 유용하며, 위와 같은 문법으로 각 언어에서 지원합니다.


관련 게시글

자바에서 병렬 처리를 구현하는 방법은 무엇인가요?

자바에서 병렬 처리는 여러 작업을 동시에 실행하여 프로그램의 성능과 응답성을 향상시키는 기법입니다....

문제 해결 및 면접 질문

문제 해결 및 면접 질문에 관한 글 --- 1. 문제 해결의 중요성 문제 해결 능력은 개인과...

자바에서 중복된 요소를 제거하는 방법은 무엇인가요?

자바(Java)에서 중복된 요소를 제거하는 방법에는 여러 가지가 있습니다. 주로 컬렉션프레임워크를 활용하...

자바 Collections에서 정렬하는 방법은 무엇인가요?

자바 Collections에서 정렬하는 방법에 대해 설명드리겠습니다. 자바에서는 컬렉션(Collection) 자료구조의...

자바의 메모리 누수 문제를 해결하는 방법은 무엇인가요?

자바의 메모리 누수 문제를 해결하는 방법 --- 1. 메모리 누수란? 자바는 가비지 컬렉션(GC)...

팩토리 패턴을 사용하여 주어진 문제를 해결해보세요.

팩토리 패턴을 사용하여 주어진 문제를 해결해보세요. --- 1. 팩토리 패턴이란? 팩토리 패턴...