참조로 호출과 C++의 값으로 호출

Jinku Hu 2023년10월12일
  1. &기호를 사용하여 C++에서 참조로 함수 호출
  2. 일반 함수 정의를 사용하여 C++에서 값으로 함수 호출
참조로 호출과 C++의 값으로 호출

이 기사에서는 C++에서 참조로 호출하는 방법과 값으로 호출하는 방법에 대한 몇 가지 방법을 설명합니다.

&기호를 사용하여 C++에서 참조로 함수 호출

함수 인수는 함수의 매개 변수를 초기화하는 값이기 때문에 함수 정의의 핵심 부분입니다. 매개 변수가 참조 인 경우 인수에 바인딩되고 인수의 값이 복사되지 않습니다. 해당 동작은 참조에 의해 전달되거나 함수가 참조에 의해 호출됩니다. 이 방법은 복사 프로세스에 포함 된 추가 리소스를 절약하기 때문에 함수간에 비교적 큰 개체를 전달해야 할 때 더 일반적으로 사용됩니다.

함수 내부의 개체에 대해 수행되는 작업은 변수의 원래 메모리 위치를 수정합니다. 이는 포인터를 개체에 전달하는 것과 유사한 방법입니다. 다음 예에서는 단일int유형 매개 변수를 취하고123값을 할당하는func함수를 보여줍니다. i기호는main프로그램의 원래j개체에 대한 별명 일뿐입니다. 하지만&기호는 C++에서 상당히 오버로드되므로 연산자 주소 기능과 혼동해서는 안됩니다.

#include <iostream>

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

void func(int &i) { i = 123; }

int main() {
  int j = 0;
  func(j);
  cout << "j = " << j << endl;

  exit(EXIT_SUCCESS);
}

출력:

j = 123

일반 함수 정의를 사용하여 C++에서 값으로 함수 호출

값으로 함수를 호출하는 것은 주어진 함수가 매개 변수를 복사하고 각 범위에 별도의 객체로 저장할 때의 동작에 대해 종종 말합니다. 해당 표기법에는 고유 한 기호가 필요하지 않지만 인수는 일반 변수로 지정됩니다. 결과적으로 펑션 블록 범위에는 별도의 개체가 있으며 이에 대한 수정은main함수의 원래 변수에 영향을주지 않습니다. 가장 일반적인 방법은 전달 된 인수가 내장 유형이거나 함수간에 쉽게 복사되는 작은 객체 일 때값으로 호출메소드를 사용하는 것입니다.

#include <iostream>

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

void func2(int i) { i = 123; }

void func(int &i) { i = 123; }

void func(int *ip) {
  *ip = 123;
  ip = nullptr;
}

int main() {
  int j = 0;
  func(j);
  cout << "j = " << j << endl;

  j = 0;
  func2(j);
  cout << "j = " << j << endl;

  j = 0;
  func(&j);
  cout << "j = " << j << endl;

  exit(EXIT_SUCCESS);
}

출력:

j = 123
j = 0
j = 123
작가: 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