-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
p3[1] 을 출력 할 때 왜 실제값이 나오나요?
21.03.27 12:50 작성 조회수 162
1
안녕하세요 판다코딩님, 강의 정말 잘 듣고 있습니다.
왜 p3[1]을 출력할 때 주소값이 아닌 실제값이 출력이 되는건가요??
포인터에서 주소값이 아닌 실제값을 출력할때는 앞에 * 이 있어야 한다고 배웠는데 여기선 *가 없어도 실제값이 출력이 되는 이유가 궁금합니다!
좋은 강의 만들어주셔서 감사합니다!
답변을 작성해보세요.
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