C++의 참조 연산자
이 기사에서는 address of
연산자라고도 하는 참조 연산자 &
에 초점을 맞춥니다.
참조 연산자는 여러 경우에 유사하게 작동하지만 다양한 프로그래밍 언어에서 거의 차이가 없습니다. 우리는 C++ 프로그래밍 언어에서의 사용에만 집중할 것입니다.
먼저 기본 구문과 개념을 배웁니다. 그런 다음 서로 다른 컨텍스트에서 참조 연산자를 사용하는 것과 관련된 일반적인 혼동에 답할 것입니다.
C++에서 참조 연산자 사용
참조 변수를 선언하는 구문:
int &ref = m;
int & ref = m;
int& ref = m;
&
연산자는 사용되는 맥락에 따라 다른 용법과 의미를 갖습니다. 다음 섹션에서는 참조 연산자가 C++에서 수행하는 작업에 대해 설명합니다.
예시:
// Simple integer type variable intialization
int m = 12;
// ref is a reference to m
int& ref = m;
// Print value of m
cout << "Original m = " << m << endl;
ref = 20;
// Print value of ref
cout << "Modified m = " << m << endl;
위의 코드에서 m
변수에 12를 저장했습니다. 다음으로 참조 연산자를 사용하여 ref
를 m
으로 지정했습니다.
여기서 가리키는 것은 ref
가 m
변수의 메모리 주소를 갖는다는 것을 의미합니다. 따라서 m
의 값을 업데이트할 때 참조 변수인 ref
변수를 통해 동일한 업데이트된 값을 얻습니다.
간단히 말해서 ref
변수는 다른 변수 m
의 별칭이 되었습니다. 또한 ref
는 m
으로 명명된 실제 변수의 또 다른 이름일 뿐입니다.
위의 코드 조각에서 ref
에 20을 할당했습니다. 이 변경 사항은 업데이트된 값이 20인 m
에서도 볼 수 있습니다.
출력:
Original m = 12
Modified m = 20
C++에서 참조 변수와 포인터 변수 비교
일반적으로 학습자는 참조 변수를 포인터 변수와 혼동합니다.
이전 섹션에서 우리는 예제와 함께 참조 변수에 대해 자세히 논의했습니다.
정의하기 위해 포인터 변수는 메모리에 변수의 주소를 저장합니다. 참조 연산자를 사용하여 값을 초기화하거나 정의합니다.
포인터 변수와 함께 &
의 사용을 이해하려면 아래 코드를 참조하십시오. 그런 다음 차이점에 대해 논의합니다.
// Integer type variable intialization
int number = 88;
// Declare a pointer variable
int* ptrNumber;
// Assign the address of the "number" to "ptrNumnber"
ptrNumber = &number;
// Declare another int pointer and initialize it with the address of the number
int* pAnother = &number;
이 코드에서는 먼저 포인터 변수 ptrNumber
를 선언한 다음 세 번째 명령문에서 number
의 주소를 할당했습니다. 여기에서 &
는 address of
연산자 역할을 하고 number
의 메모리 주소를 반환한 다음 ptrNumber
포인터에 할당됩니다.
위 스니펫의 마지막 명령문은 선언 시 number
의 주소를 다른 포인터인 pAnother
에 할당합니다. 포인터 변수는 참조 변수와 다릅니다.
아래 표를 사용하여 차이점을 살펴보겠습니다.
포인터 변수 | 참조 변수 |
---|---|
포인터는 변수의 메모리 주소를 유지합니다. | 참조 변수는 다른 변수의 별칭입니다. |
간접 참조 연산자 * 는 포인터를 역참조하는 데 사용됩니다. |
참조 변수는 역참조가 필요 없는 상수 포인터입니다. |
다양한 항목을 참조하도록 재할당할 수 있습니다. | 초기화 시 할당해야 하며, 주소 값은 한번 형성되면 변경할 수 없습니다. |
NULL 값은 포인터 변수에 직접 할당될 수 있습니다. | NULL 값은 직접 설정할 수 없습니다. |
&
연산자는 함수에서 형식 매개변수와 함께 사용될 때 참조 매개변수로 만듭니다. 참조 및 값 매개변수에 대한 자세한 내용은 여기를 참조하세요.
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn