• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

p3[1] 을 출력 할 때 왜 실제값이 나오나요?

21.03.27 12:50 작성 조회수 162

1

안녕하세요 판다코딩님, 강의 정말 잘 듣고 있습니다.

왜 p3[1]을 출력할 때 주소값이 아닌 실제값이 출력이 되는건가요??

포인터에서 주소값이 아닌 실제값을 출력할때는 앞에 * 이 있어야 한다고 배웠는데 여기선 *가 없어도 실제값이 출력이 되는 이유가 궁금합니다!

좋은 강의 만들어주셔서 감사합니다!

답변 2

·

답변을 작성해보세요.

5

김경민님의 프로필

김경민

2021.03.27

안녕하세요!

강의에서 p3 이라는 포인터 변수에 new 연산자를 이용하여

메모리를 동적할당 하였습니다. 배열과 동일하게 메모리 공간에 연속적으로

할당되고 , 따라서 [ ] 를 이용하여 배열처럼 인덱스로 접근할 수 있습니다.

int a[10]; 이라고 배열을 선언한 경우에도, 배열의 이름 a는 포인터입니다.

*를 사용하여  *a, *(a+1) , ...  과 같이 접근할 수 있습니다.

이때 괄호에 주의하셔야 합니다.

*a + 1은 a가 가리키는 값을 가져와서 1을 더하는 것이고,

*(a+1)은 a의 주소값에 a 포인터 변수의 크기(=주소공간 한 칸)만큼 더한 다음

값에 접근한다는 의미이기 때문에 다음과 같이 사용할 수 있습니다.

*a  ==  *(a+0)  ==  a[0]

*(a+1)  ==  a[1] 

a와 a+1을 확인해보시면, 1씩 늘어나는게 아니라

포인터 변수의 크기만큼 늘어남을 알 수 있습니다.

첨언해드릴 말이 없습니다.

제가 확인이 늦었는데 친절하고 자세한 답변 너무나 감사드립니다 :)

2

전성철님의 프로필

전성철

질문자

2021.03.29

감사합니다!

김경민님의 프로필

김경민

2021.03.29

도움이 되셨다면 다행입니다!