데이터(또는 변수)를 함수에 대한 인수로 보낼 수 있는 여러 가지 방법이 있습니다. 일반적인 두 가지 방법은 값에 의한 전달과 참조에 의한 전달입니다. 참조로 전달하면 함수가 복사본을 만들지 않고도 변수를 수정할 수 있습니다. 참조 변수를 선언해야 합니다. 전달된 변수와 매개변수의 메모리 위치는 동일합니다. 따라서 매개변수에 대한 모든 변경 사항은 해당 상위 함수 내의 변수에도 반영됩니다. 이 기사에서는 C++에서 참조로 변수를 전달하는 방법을 중점적으로 설명합니다.
참조에 의한 전달이란 무엇입니까?
변수가 함수에 대한 참조로 전달되면 변수의 주소가 함수 내부의 포인터 변수에 저장됩니다. 따라서 함수 내부의 변수는 전달된 변수의 별칭입니다. 따라서 함수 내부의 변수에 대해 수행된 모든 작업은 호출하는 함수에도 반영됩니다.
- 변경 사항을 반영하는 이 기능은 함수에 의해 둘 이상의 값을 반환할 수 있습니다.
- 또한 void 함수는 이 메서드를 사용하여 기술적으로 값을 반환할 수 있습니다.
그만큼 & (주소) 연산자는 함수에서 참조에 의한 전달로 전달된 값을 나타냅니다. 다음은 참조별 전달을 구현하는 C++ 프로그램입니다.
C++
자바 정수를 문자열로
// C++ program to implement> // pass-by-reference> #include> using> namespace> std;> > void> f(>int> & x)> {> >x--;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(a);> >cout << a << endl;> }> |
CSS 불투명도 전환
>
>산출
5 4>
설명:
- 먼저 함수는 반환 데이터 유형 void로 정의되고 참조로 값을 가져옵니다( & 형식 매개변수의 주소 기호).
- 이 함수는 형식 매개변수의 값을 1씩 감소시킵니다.
- 그 후, 메인 함수 내에서 이름이 정수 변수입니다. ㅏ 값 5로 초기화됩니다.
- 'a' 값이 콘솔에 인쇄됩니다. f() 함수가 호출되고 변수가 인수로 전달됩니다.
- 함수 내에서 변수의 값은 1씩 감소합니다.
- 함수에서 반환되면 변수의 값이 다시 표시되는데, 이는 원래 값보다 1 작은 것으로 나타났습니다.
따라서 함수에 대한 참조로 전달된 변수의 변경 사항은 호출하는 함수에 반영됩니다.
Pass-By-Reference를 이용한 Swap 기능
스왑 함수는 인수로 받은 두 변수의 값을 교환합니다. 다음은 참조별 전달을 사용하여 두 변수의 값을 교환하는 C++ 프로그램입니다.
C++
널 포인터 예외
// C++ program to swap the values> // of two variables using> // pass-by-reference> #include> > // Prototype of the function> void> swap(>int> &,>int> &);> > // Driver code> int> main()> {> >int> x, y;> > >// Inputting two variables> >printf>(>'Enter the value of x and y
'>);> >scanf>(>'%d%d'>, &x, &y);> > >// Displaying their values before swapping> >printf>(>'Before Swapping
x = %d
y = %d
'>,> >x, y);> > >// Calling the function & sending variable> >// values as argument> >swap(x, y);> > >// Displaying their values after swapping> >printf>(>'After Swapping
x = %d
y = %d
'>,> >x, y);> >return> 0;> }> > // Function uses pass by reference method> // to swap passed variable values> void> swap(>int> &a,>int> &b)> {> >int> temp;> > >temp = b;> >b = a;> >a = temp;> }> |
>
>
비공개 vs 공개 자바
산출:
설명:
- 먼저 함수 프로토타입이 정의됩니다(함수가 기본 함수보다 먼저 정의된 경우 선택 사항).
- 메인 함수 내에서 두 변수의 값은 사용자의 입력으로 사용됩니다.
- swap 함수를 호출하기 전의 값은 콘솔에 인쇄됩니다.
- 그런 다음 값은 스왑 함수에 인수로 전달됩니다.
- 스왑 함수는 참조별 호출을 활용하며 두 변수를 교환하기 위한 코드를 포함합니다.
- 함수가 완료되면 두 변수의 값이 주 함수에 표시됩니다(스왑 호출 후).
- 교환된 값이 화면에 표시됩니다.
포인터를 사용하여 참조로 전달
호출 함수에서 변수 주소를 전달하여 호출된 함수 내에서 포인터로 사용할 수도 있습니다. 이를 통해 함수의 변수 값을 좀 더 명시적으로 변경할 수 있습니다.
다음은 포인터를 사용하여 참조에 의한 전달을 구현하는 C++ 프로그램입니다.
C++
// C++ program to implement> // pass-by-reference with> // pointers> #include> using> namespace> std;> > void> f(>int> *x)> {> >*x = *x - 1;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(&a);> >cout << a << endl;> }> |
>
Java의 arraylist 정렬
>산출
5 4>
설명:
- 먼저 함수는 반환 데이터 유형 void로 정의되고 값을 포인터(*로 표시됨)로 받아들입니다. 별표 공식 매개변수에 서명하세요.)
- 이 함수는 형식 매개변수의 값을 1씩 감소시킵니다.
- 그런 다음 메인 함수 내에서 'a'라는 정수 변수가 값 5로 초기화됩니다.
- 그러면 이 값이 표시됩니다. 함수가 호출되고 변수의 주소가 인수로 전달됩니다.
- 함수 내에서 포인터 변수의 값은 1씩 감소됩니다.
- 함수에서 반환되면 변수의 값이 다시 표시되는데, 이는 원래 값보다 1 작은 것으로 나타났습니다.