• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

포인터 연산 강의 질문드립니다.

22.01.23 16:00 작성 조회수 140

1

안녕하세요

Complex data 부분 포인터 연산 강의에서

(Int*) animal 과 &animal 의 차이를 잘 모르겠습니다.

좋은 강의 감사드립니다.

답변 2

·

답변을 작성해보세요.

1

fluffyck님의 프로필

fluffyck

질문자

2022.01.25

감사합니다! 정리가 됐습니다

0

포인터와 참조의 역할에 대해 헷갈리신 것 같습니다.

(혹은 연산자의 사용에서 헷갈리신 것 같기도 합니다..!)

표면적으로 참조와 포인터는 매우 유사하여,

둘 다 하나의 변수가 다른 변수에 대한 접근을 제공하는 데 사용되기에 즉 동일한 가능을 많이 제공하므로, 기능적으로 매커니즘 간의 차이점이 명확하지 않는 경우가 많습니다.

원론적으로 설명드리면 포인터는 다른 변수의 메모리 주소를 보유하는 변수로써 포인터가 가리키는 메모리 위치에 접근 하려면 * 연산자를 사용하여 포인터를 역참조 하여야 합니다.  

참조는 별칭, 변수의 다른 이름입니다. 포인터와 마찬가지로 참조 역시 개체의 주소를 저장하고 컴파일러가 * 연산자를 적용합니다.

int i = 3; 

int *ptr = &i; 

int &ref = i;

정수 i가 있을 대 ptr은 변수 i에 대한 포인터이고, ref는 i에 대한 참조입니다.

다시 사용자님의 질문으로 돌아가서,

&은 ~의 주소로 (int *)은 값을 주소로 취급을 의미합니다.

즉 후자의 경우는 일종의 int 포인터로 취급됩니다.