작성
·
71
·
수정됨
답변 2
0
안녕하세요 대식님 ㅎㅎ
먼저 &와 *에 대해 다시 설명드리겠습니다.
C/C++에서 사용되는 &
와 *
연산자는 서로 반대되는 역할을 합니다.
&
연산자: 변수의 주소를 구하는 데 사용됩니다.
*
연산자: 포인터가 가리키는 값(역참조)을 얻을 때 사용됩니다.
즉, 만약 어떤 포인터 p
가 있을 때,
p
자체는 변수 x
의 주소를 저장한다고 할 수 있습니다.
*p
는 그 주소에 저장된 실제 값(예를 들어, x
의 값)을 참조합니다.
&*
는 이 두 연산자가 결합된 형태로, 아래와 같은 순서로 연산됩니다.
*
연산자 먼저 적용:*p
를 통해 포인터 p
가 가리키는 메모리 위치에 저장된 값에 접근합니다.
&
연산자 적용:
그 다음, &(*p)
를 통해 위에서 얻은 값의 주소를 구합니다.
그런데, 포인터 p
가 이미 어떤 변수의 주소를 저장하고 있기 때문에,&(*p)
를 구하면 원래 포인터 p
가 저장하고 있던 주소와 동일한 값이 나오게 됩니다.
참고로 해당 부분에 대한 포인터, 메모리에 대한 부분은 0주차 강의내에서 자세히 설명을 드리고 있습니다.
다음의 강의부터 쭉 메모리에 대한 얘기가 있는데 참고부탁드립니다.
[필수개념] 메모리와 포인터(pointer) #1 메모리와 주소
c++ 기본에 대한 설명이 너무 부족한거같네요.. 교안만 보면 베이스 지식을 요구하는 부분이 너무 많습니다.
-> 혹시 어떤 부분이 부족한것 같나요? 말씀해주시면 보완하겠습니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다. 대식님!
C++의 &
와 *
연산자에 대해 궁금하신 점에 대한 이해를 돕기 위해 간단히 설명을 드리겠습니다.
&
는 주소 연산자로, 변수의 메모리 주소를 반환합니다. 예를 들어, int a = 5;
에서 &a
는 a의 메모리 주소입니다.*
는 역참조 연산자로, 포인터가 가리키는 주소에 저장된 값을 반환합니다. 예를 들어, int *p = &a;
에서 *p
는 a의 값을 반환합니다.그렇다면 &*x
는 무엇일까요? 이는 두 연산자를 연속해서 사용하는 경우로, *
를 통해 포인터가 가리키는 값을 참조한 다음, 다시 &
를 통해 그 값의 주소(즉, 원래의 포인터 값)를 반환합니다. 결국, &*
는 실질적으로 원래의 포인터와 동일한 결과를 얻게 됩니다. 이는 크게 의미가 없으며, 주로 실수로 발생하는 코드입니다.
사라지 않아 보이는 개념이지만, 실제로는 기본을 이해하는 데 있어 중요한 부분입니다. &*
는 기본적으로 서로를 상쇄하게 되기 때문에 코드 내에서 필요한 경우는 드뭅니다.
만일 이 설명이 충분하지 않거나 추가적인 설명이 필요한 경우, 관련 포인터와 메모리 주소에 대한 추가 자료를 참조하실 것을 권장드립니다. 이 링크에 포인터 관련해서 도움을 받을 수 있는 다른 답변도 참고하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.