Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 값에 의한 전달과 참조에 의한 전달 중 어느 것이 더 낫습니까?

<시간/>

C++에서는 다양한 방식으로 함수에 인수를 전달할 수 있습니다. 이러한 다양한 방법은 -

  • 가치에 의한 호출
  • 참조에 의한 호출
  • 주소로 전화 걸기

때때로 주소에 의한 호출은 참조에 의한 호출이라고 하지만 C++에서는 다릅니다. 주소에 의한 호출에서는 포인터 변수를 사용하여 정확한 메모리 주소를 보내지만 참조에 의한 호출에서는 참조 변수(해당 변수의 별칭)를 전달합니다. 이 기능은 C에 없으므로 해당 효과를 얻으려면 포인터를 전달해야 합니다.

이 섹션에서는 값에 의한 호출에 비해 참조에 의한 호출의 이점과 사용 위치에 대해 알아보겠습니다.

값에 의한 호출

값에 의한 호출에서 인수로 전달된 실제 값은 일부 작업을 수행한 후에도 변경되지 않습니다. 값에 의한 호출이 사용되면 메모리의 스택 섹션에 해당 변수의 복사본이 생성됩니다. 값이 변경되면 해당 복사본의 값이 변경되고 실제 값은 그대로 유지됩니다.

예시 코드

#include<iostream>

using namespace std;

void my_function(int x) {
   x = 50;
   cout << "Value of x from my_function: " << x << endl;
}

main() {
   int x = 10;
   my_function(x);
   cout << "Value of x from main function: " << x;
}

출력

Value of x from my_function: 50
Value of x from main function: 10

참조로 호출

참조에 의한 호출에서 인수로 전달된 실제 값은 그에 대한 일부 작업을 수행한 후 변경됩니다. 참조에 의한 호출이 사용되면 메모리의 스택 섹션에 해당 변수의 참조 복사본이 생성됩니다. 값을 가져오기 위해 참조를 사용합니다. 따라서 참조를 사용하여 값을 변경하면 실제 변수의 값이 변경됩니다.

예시 코드

#include<iostream>
using namespace std;

void my_function(int &x) {
   x = 50;
   cout << "Value of x from my_function: " << x << endl;
}

main() {
   int x = 10;
   my_function(x);
   cout << "Value of x from main function: " << x;
}

출력

Value of x from my_function: 50
Value of x from main function: 50

참조로 호출을 사용하는 위치

  • 참조에 의한 호출은 전달된 인수의 값을 호출자 함수로 변경하려는 경우 주로 사용됩니다.

  • 하나의 함수는 하나의 값만 반환할 수 있습니다. 함수에서 둘 이상의 값이 필요한 경우 이러한 방식으로 출력 인수로 전달할 수 있습니다.