인수(Argument)란?

함수나 프로시저를 호출할 때 넘기는 값. 선언하는 쪽에서 값을 받는 변수를 형식 인수(매개변수), 호출하는 쪽에서 넘기는 값을 실인수라고 한다. 값을 복사하여 넘기는 값에 의한 전달과, 변수나 배열 자체를 참조하게 하는 참조에 의한 전달이 있다.

일본어 명칭: 引数

인수(Argument)은(는) 링커, 로더, 실행 파일, 프로그래밍의 기초(의사 코드 트레이스), 컴파일러 등 7개 분야의 연습 문제 21개에 나와요.

분야: 프로그래밍의 기초(의사 코드 트레이스)

도전해 보기: 인수(Argument) 관련 문제

C++ 컴파일러가 함수 이름에 인수 타입 등의 정보를 덧붙여 심볼 이름을 만드는 '네임 맹글링(name mangling)'의 주된 목적은 무엇입니까?

  1. A함수 이름을 읽을 수 없게 하여 프로그램을 도난당하지 않도록 하기 위해
  2. B함수 이름을 짧게 하여 실행 파일을 작게 하기 위해
  3. C같은 이름이면서 인수 타입이 다른 함수(오버로드)나 네임스페이스를 링커가 구별할 수 있게 하기 위해
정답과 해설 보기

정답: C. 같은 이름이면서 인수 타입이 다른 함수(오버로드)나 네임스페이스를 링커가 구별할 수 있게 하기 위해

링커는 심볼을 이름 문자열만으로 대조합니다. C++에서는 'print(int)'와 'print(double)'처럼 같은 이름의 함수를 만들 수 있으므로 그대로는 구별할 수 없습니다. 그래서 컴파일러는 '_Z5printi'처럼 인수 타입 등을 이름에 넣습니다. C 언어 함수는 맹글링되지 않으므로, C++에서 C 함수를 호출할 때는 'extern "C"'를 붙여 맹글링을 하지 않게 합니다.

해설 속 인수(Argument)

인수(Argument)이(가) 나오는 문제 (21)

  1. C++ 컴파일러가 함수 이름에 인수 타입 등의 정보를 덧붙여 심볼 이름을 만드는 '네임 맹글링(name mangling)'의 주된 목적은 무엇입니까?
  2. 위와 같이 스크립트 s.sh를 인수를 붙여 실행했을 때의 출력으로 올바른 것은?
  3. ÷는 나눗셈이며, 정수형 변수(인수 포함)에 대입할 때는 소수점 이하를 버린다. 다음 함수 f를 f(9087)로 호출했을 때의 반환값은?
  4. ÷는 나눗셈이며, 정수형 변수(인수 포함)에 대입할 때는 소수점 이하를 버린다. 다음 함수 toBin을 toBin(12)로 호출했을 때의 반환값은?
  5. ÷는 나눗셈이며, 정수형 변수(인수 포함)에 대입할 때는 소수점 이하를 버린다. 다음 함수 pow를 pow(2, 10)으로 호출했을 때, pow가 호출되는 횟수(최초 호출 포함)는?
  6. ÷는 나눗셈이며, 정수형 변수(인수 포함)에 대입할 때는 소수점 이하를 버린다. 다음 프로그램은 오름차순으로 정렬된 정수형 배열 data(인덱스는 1부터 시작)에서 x 이상인 값이 처음 나타나는 인덱스를 lo에 구한다. x는 data의 마지막 요소 이하라고 한다. 프로그램 중의 【a】에 들어갈 것은?
  7. 컴파일러의 의미 분석에서 발견되는 오류의 예로 가장 적절한 것은?
  8. 함수 인라인 전개의 장점과 단점의 조합으로 올바른 것은?
  9. 위의 함수의 마지막 재귀 호출에 꼬리 호출 최적화를 적용하면 어떤 효과가 있는가?
  10. 정적 타입을 가진 언어에서 컴파일러가 타입 검사를 하는 주된 이점은?
  11. 프로그램을 기동할 때(Linux의 execve 등) OS 로더가 수행하는 일로 올바른 것은 무엇입니까?
  12. C 언어 프로그램에서 OS가 처음 실행을 시작하는 주소(엔트리 포인트)에 대해 올바른 것은 무엇입니까?
  13. Linux 공유 라이브러리에서 libfoo.so.1의 '.1'과 같은 soname 버전 번호를 올리는 것은 일반적으로 어떤 경우입니까?
  14. 위 RISC-V 코드의 마지막 ecall 명령이 실행되었을 때 일어나는 일로 올바른 것은?
  15. 작은 데이터를 1바이트씩 쓸 때, 매번 시스템 콜을 호출하는 것보다 사용자 공간의 버퍼에 모았다가 한꺼번에 쓰는 편이 빠른 주된 이유는?

관련 용어

변수(Variable) 반환값(Return Value) 재귀(Recursion) 배열(Array) 스택(Stack) 링커(linker) 동적 링크(Dynamic Linking) 특권 모드(Privileged Mode) 시스템 콜(system call) 포인터(Pointer)

용어집으로 돌아가기