인프런 커뮤니티 질문&답변

이임충님의 프로필 이미지
이임충

작성한 질문수

[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문

분할 컴파일

MyStruct 구조체에 &를 붙인 이유는 무엇인가요?

작성

·

240

1

안녕하세요. 올려주신 강의 잘 보고 있습니다.

이번에 작성하신 예시 중에서 

함수인 display의 매개변수로 Mystruct&를 넣어주셨는데

혹시 &를 붙여준 이유가 있을까요?

&를 뺀 상태로 코드를 작성해도 같은 결과가 나오더라고요.

이전에 올려주신 강의인 참조 변수 강의를 보면

대상을 직접 할당한다고 설명해주셨는데,

Mystruct& temp나 Mystruct temp나 

temp가 구조체로 선언한 Mystruct를 참조하는 변수? 라고 생각하면 똑같은거 아닌가 해서요.

Mystruct&라고 붙이면 temp는 Mystruct를 직접 할당한 변수 temp? 라고 생각이 들고

Mystruct temp는 구조체 Mystruct의 객체 temp라고 생각이 드네요.

약간 혼란스러운데, &를 붙이신 이유가 궁금합니다

답변 1

0

판다코딩님의 프로필 이미지
판다코딩
지식공유자

답변이 늦어져서 죄송합니다.

먼저 C++에서 &의 사용처부터 짚고 넘어가겠습니다.

  • 표현식에서의 "주소"
  • 참조
  • 비트 AND 연산

질문해주신 사안처럼 표면적으로 들어나기엔 ampersand(&)를 사용하거나 사용하지 않거나 큰 차이가 없는 것 처럼 보일 수 있습니다.

추후에 포인터와 결합될 때 코드의 효율성/안정성에서 차이가 있습니다. 다시 생각해보니 습관적으로 붙여주었기에 이번 예제에서는 조금 헷갈리셨을 수 있을 것 같습니다.

효율성과 안정성이 적절한 단어 선택인지 잘 모르겠습니다. 아래 URL을 참조해보시면 지식을 정리하는 데 많은 도움이 될 것 같습니다 :)

https://stackoverflow.com/questions/2094666/pointers-in-c-when-to-use-the-ampersand-and-the-asterisk

이임충님의 프로필 이미지
이임충

작성한 질문수

질문하기