티스토리 뷰

42/cpp

참조자

stdbc 2021. 5. 26. 19:37

참조자(Reference)

할당된 하나의 메모리 공간에 다른 이름을 붙이는 것, 자신이 참조하는 변수를 대신할 수 있는 또 하나의 이름 (=별명)

 

포인터와의 차이

- 이미 선언되어 있는 변수에 대해서만 참조자 선언이 가능 = 참조자 선언과 동시에 누군가를 참조해야 한다.  = NULL값이 없다

- 한번 지정한 객체를 변경할 수 없다.

 

int main(void)
{
    string str = "hello world";
    string* ptr = &str;
    string& ref = str;

    // str = *ptr = ref
}

 

위처럼 변수와 참조자를 동시에 선언하여 사용하는 상황보다는, 참조자가 함수에 활용되는 경우가 많다.


함수에 인수를 전달하는 3가지 방법

출처

  • 값으로 전달 = 기본 자료형의 값을 전달할 때
    • 인수가 해당 함수의 매개변수로 복사되어 전달되기 때문에 인수의 원본은 함수 안에서 수정이 불가능하다.
    • 배열, 구조체, 클래스 등을 복사하는 데 큰 비용이 든다. 
  • 참조로 전달 = 구조체, 클래스를 전달할 때
    • 함수가 인수의 값을 변경할 수 있다.
    • 인수의 복사본이 만들어지지 않아 큰 구조체나 클래스와 함께 사용하는 경우에도 전달이 빠르다.
    • 여러 매개변수를 통해 여러 값을 반환할 수 있다.
    • const 를 사용하여 변수가 참조를 통해 변경되지 않는 것을 보장할 수 있다. (읽기전용 함수)
  • 주소로 전달
    • 포인터가 가리키는 주소가 매개변수로 복사된다. = 값으로 전달된다.
    • 주소를 역참조하여 인수의 원본 값을 변경할 수 있다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함