inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

분할 컴파일

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

338

이임충

작성한 질문수 8

1

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

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

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

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

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

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

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

Mystruct& temp나 Mystruct temp나 

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

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

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

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

구조체 C++

답변 1

0

판다코딩

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

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

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

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

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

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

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

null 문자가 포함되면 왜 뒤에 불필요한 것들이 사라지나요?

0

558

1

강의 중 궁금한게 있습니다.

0

405

0

포인터 연산 강의

0

374

1

강의중 궁금한 내용이 있습니다

2

489

3

(int*)이 어떤 원리인건지 잘 이해가 안되요 ㅜ

1

455

0

char형과 char 배열을 차이점이 뭔가요

0

390

0

오토를 맹신하지 말라는 것이 무슨 뜻인가요?

0

330

1

안녕하세요 class의 멤버함수에 관련하여 질문이 있습니다.

0

246

0

강의 잘 듣고있습니다. 그런데 소스코드에 오타가 있는듯합니다.

1

332

0

포인터를 증가시키거나 감소시킨 상태에서는 delete 사용이 불가능한가요?

0

459

0

const float PI =3.14159265; 로 선언하고 원의 넓이를 구할 때 궁금한 것이 있습니다.

0

658

1

iosteam 헤더 파일 중복

0

362

1

함수 뒤 세미콜론

0

321

0

함수는 원본이 아닌 복사본을 사용한다는 말에 대해서 질문있습니다

0

242

0

sizeof arr에서

0

415

3

포인터를 이용한 주소값이 이상합니다

0

288

1

바이트와 관련하여서 질문이 있습니다

0

257

1

출력이 안되요

0

278

0

마지막에 main.cpp 에서

1

263

0

예제코드 오타 있어요

1

204

0

함수의 대괄호 뒤에 ; 가 붙는것과 안뭍는것의 차이가 뭔가요?

0

219

0

new/delete 연산자

1

257

1

컴파일에러

1

282

1

string에서 문자열 길이

1

261

1