하나 더! arr 배열의 요소를 가리킬 때 arr[i]라고 작성했는데, 이를 다음과 같이 표현할 수도 있습니다.
// printf("배열 arr[%d]의 값 : %d\n", i, arr[i]);
printf("배열 arr[%d]의 값 : %d\n", i, *(arr + i));
정확히 말하면 이 코드에서 arr은 arr 배열이 시작되는 주소, 즉 첫 번째 요소의 주소를 가지고 있습니다. 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));
실행결과 |
배열 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)로 수정해도 결과는 같음 |