C++에서 함수 인수와 매개 변수의 차이점

Jinku Hu 2023년10월12일
C++에서 함수 인수와 매개 변수의 차이점

이 기사에서는 C++에서 함수 인수와 매개 변수의 차이점을 설명합니다.

C++의 함수 분석

함수는 비교적 정교한 프로그램의 공통 빌딩 블록입니다. 이를 통해 프로그램에서 반복 루틴을 별도의 블록으로 정의하고 해당 코드를 실행해야 할 때 호출 할 수 있습니다. 프로그램을 여러 기능으로 분할하면 프로그램이 더욱 모듈화되고 유지 관리 및 이해가 쉬워집니다. 결과적으로 이러한 프로그램은 일반적으로 테스트 및 디버그가 더 쉽습니다.

함수에는 일반적으로 고유하게 식별되는 이름이 있습니다. 그러나 함수 오버로딩과 같은 일부 개념은 프로그래머가 동일한 이름으로 여러 함수를 정의 할 수 있도록합니다. 이 기능은 이후 단락에서 살펴볼 것입니다. Lambda 표현식도 믹스에 포함되어 이름이 지정되지 않은 함수 객체를 정의하는 방법을 제공합니다. 함수 블록에있는 서로 다른 명령문의 합계를 함수 본문이라고합니다. 함수에는 호출자에게 다시 전달 된 값의 유형을 나타내는 반환 유형도 있습니다.

함수의 또 다른 중요한 부분은 함수 시그니처의 일부로 선언 된 변수를 나타내는 매개 변수 목록입니다. 호출자는 일반적으로 몇 가지 구체적인 값을 전달하여 함수 범위에서 이러한 변수를 초기화합니다. 후자의 값을 인수라고하며 함수 매개 변수의 이니셜 라이저라고합니다. 그럼에도 불구하고, 매개 변수와 인수라는 용어는 일부 상황에서 서로 바꿔서 사용할 수 있습니다.

아래의 예제 프로그램에서는 서명에 정의 된 매개 변수 (이름 :vec) 만있는printVector라는 함수를 보여줍니다. 프로세스가main함수에서 호출되면vec1인수가 전달됩니다. 실행이printVector함수 본문으로 이동하면vec매개 변수가 해당 값으로 초기화됩니다.

#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

template <typename T>
void printVector(const vector<T> &vec) {
  for (auto &i : vec) {
    cout << i << "; ";
  }
  cout << endl;
}

int main() {
  vector<int> vec1{11, 82, 39, 72, 51, 32, 91};

  printVector(vec1);

  return EXIT_SUCCESS;
}

출력:

11; 82; 39; 72; 51; 32; 91;

이전 장에서 언급했듯이 C++는 프로그래머가 동일한 이름으로 여러 함수를 정의 할 수 있도록하는 함수 오버로딩 개념을 지원합니다. 그러나 이러한 함수는 허용하는 인수 수나 인수 유형에 따라 달라야합니다.

다음 프로그램은 각각int또는double유형의 두 숫자를 곱하는 오버로드 된 함수의 기본 사용법을 보여줍니다.

#include <iostream>

using std::cout;
using std::endl;

int multiply(int x, int y) { return x * y; }

double multiply(double x, double y) { return x * y; }

int main() {
  int i1 = 10;
  double d1 = 0.1;

  cout << multiply(i1, i1 + 1) << endl;
  cout << multiply(d1, d1 + 1) << endl;

  return EXIT_SUCCESS;
}

출력:

110
0.11
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C++ Function