참조로 호출과 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
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