더북(TheBook)

하나 더! arr 배열의 요소를 가리킬 때 arr[i]라고 작성했는데, 이를 다음과 같이 표현할 수도 있습니다.

// printf("배열 arr[%d]의 값 : %d\n", i, arr[i]);
printf("배열 arr[%d]의 값 : %d\n", i, *(arr + i));

정확히 말하면 이 코드에서 arrarr 배열이 시작되는 주소, 즉 첫 번째 요소의 주소를 가지고 있습니다. arr[i]는 배열 첫 번째 요소의 주소로부터 i번째에 해당하는 요소의 값을 가져온다는 의미입니다. 따라서 두 번째 코드처럼 *(arr + i)라고 바꿀 수 있습니다. 두 코드는 문법적으로 완전히 같은 문장입니다. 마찬가지로 ptr[i]*(ptr + i)로 바꿔서 사용할 수 있습니다. 기존 코드에서 두 문장을 바꾸고 출력해 봅시다.

// printf("포인터 변수 ptr[%d]의 값 : %d\n", i, ptr[i]);
printf("포인터 변수 ptr[%d]의 값 : %d\n", i, *(ptr + i));

실행결과 icon_con

배열 arr[0]의 값 : 5
배열 arr[1]의 값 : 10
배열 arr[2]의 값 : 15
포인터 변수 ptr[0]의 값 : 5
포인터 변수 ptr[1]의 값 : 10
포인터 변수 ptr[2]의 값 : 15
배열 arr[0]의 값 : 100
배열 arr[1]의 값 : 200
배열 arr[2]의 값 : 300
포인터 변수 ptr[0]의 값 : 100
포인터 변수 ptr[1]의 값 : 200
포인터 변수 ptr[2]의 값 : 300
arr[i]와 ptr[i]를 *(arr + i)와 *(ptr + i)로 수정해도 결과는 같음
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.