카테고리 없음

레퍼런스 변수 (&, 참조 변수)

zuyo 2019. 5. 9. 01:34
반응형

참조변수란?

참조변수는 C++문법으로 이미 선언된 변수를 다른 이름으로 부르는 변수이다.
변수의 가명 혹은 변수가 이어져 있다고 생각하면 될 것 같다.

용도
참조 변수는 public과 private여부에 관계 없이 값 변경이 가능하다.
외부의 함수에서 private변수에 접근할 때 쓸 수 있다.

int a = 100;
int& b = a; // 반드시 선언과 동시에 초기화 시켜주어야 한다.

포인터와의 차이점

포인터와 유사하고 비슷한 용도로 쓰이지만 다음과 같은 차이점이 있다.

포인터 
- 간접 접근을 통해 기억장소를 참조 (포인터 변수에 접근 → 포인트 변수가 가리키는 주소로 다시 접근)
- NULL 가능

참조변수
- 직접 접근을 통해 기억장소를 참조 (다이렉트로 변수에 접근)
- NULL 불가 (선언과 동시에 초기화)

 

포인터 예)

void main()
{
	int* p1;

	int v1 = 100;
	int v2;

	p1 = &v1; // p1은 v1의 주소를 가리킨다
	v2 = *p1; // v2에 p1이 가리키는 주소의 값(v1)을 넣는다

	cout << v2;
}

참조변수 예)

void main()
{
	int v1 = 100;
	int& v2 = v1; // 선언과 동시에 초기화

	cout << v2 << endl;

	v2=200; // v2의 값을 변경

	cout << v1; // v1의 값도 변경된다.
}
반응형