배열과 포인터의 관계 공부하는중임


대괄호 연산에 대해 궁금한게있는데


내가 배운 바에 의하면 arr[3] = *(arr + 3)

이런 식으로 변환되어 포인터 연산을 하는 것 까진 이해됨


이차원 배열의 경우도 생각보는 문제가 나와서 걍 다항식 전개하듯

arr[3][3] = *(*(arr + 2) + 2) 라고 했지

그리고 그게 정답 맞았음


근데 헷갈리는건 * ← Asterisk 이새기는 해당 주소의 값을 의미하는거잫아


그러면 *(*(arr + 2) + 2) 여기서 맨 안쪽 괄호 (arr + 2) 포인터 덧셈을 수행하고

애스터리스크로 그 값을 반환하겠지 *(arr + 2)니까


근데 그러고 나면 '값'이 반환되었으므로(애스터리스크 썼으니까)

큰 소괄호에는 포인터 연산이 아닌 단순 덧셈이 수행되야 하는거 아님?

더이상 arr라는 배열의 초기값을 지정하는 포인터가 사라졌으니까


즉, *((arr + 2) + 2) 가 되어야 정답이 되는거 아니냐

왜 *(*(arr + 2) + 2)가 정답인 거지


글이 좀 길어서 못알아들을 수도 있겠는데

혹시 댓글 달아주면 최대한 잘 설명해볼게 답변 부탁함 고수님들아