본캠프 11일차_C++ 문법(4)

YU YEON WON·2025년 8월 19일

1. 오늘 학습 내용(키워드)

레퍼런스(참조)에 대해 배웠다.

  • 레퍼런스란?
    • 포인터를 사용하면 주소값을 직접 다뤄야해 복잡해질 수 있다.
    • 이 문제를 완화하기 위해 C++에서는 변수에 또 다른 이름을 부여하는 '레퍼런스'문법을 만들었다.
    • 일반 변수와 거의 동일하게 사용할 수 있다.
    • 특정 변수에 대한 별명을 부여하는 것이다.
    • 한 번 특정 변수의 레퍼런스를 연결하면, 이후로는 마치 그 변수가 두 개의 이름을 갖는 것과 같다.
    • 선언 방법은 데이터형 뒤에 &을 붙이는 것이다. 예) int&, cha&
    • int& ref = var;처럼 사용한다. 이렇게 하면 ref의 값 변경시 var의 값도 변경 된다.

  • 포인터와 레퍼런스의 차이점
    포인터와 레퍼런스는 다른 변수를 제어한다는 점에서 유사하지만 몇 가지 중요한 차이가 있다.
    • 선언과 초기화 시점이 다르다.
      포인터는 선언 후, 나중에 =연산자를 통해 가리킬 대상을 변경할 수 있다. 반면에 레퍼런스는 선언과 동시에 초기화해야 하며, 초기화 이후에는 다른 대상에 재연결할 수 없다.
    • 레퍼런스는 항상 다른 변수와 연결되어 있기 때문에 NULL이라는게 없다.
      반면에 포인터는 유효한 대상이 없음을 나타내기 위해 NULL 혹은 nullptr을 가질 수 있다.
    • 간접 참조 문법의 유무
      포인터는 주소값을 담으므로 접근할 때는 *연산을 사용하고 주소를 가져올 때는 &연산을 사용한다.
      하지만 레퍼런스는 변수 자체의 별명이므로 일반 변수와 연산하는 방법이 동일하다.

2. 느낀점

포인터와 레퍼런스까지 머리에 들어오기 시작하니 복잡해졌다.
키워드로 구분해서 외워야겠다. 포인터 = 주소, 레퍼런스 = 별명
코드를 많이 봐야 이것을 구분하고 이해하는 능력이 향상될 것 같다.

3. 익일 학습 할 것

C++ 문법 - class, C++ 1단계 과제 수행

profile
🕹️🎮🍱✈️📸 안녕하세요! 게임개발에 도전하고 있습니다!

0개의 댓글