안녕하세요:)
연습 문제 구현 중,
swap(&arr[min_idx], &arr[i]);
이 부분을
swap(arr + min_idx, arr + i);
이렇게 구현을 해봤는데, 똑같이 작동해 확인 차 여쭤보려고 질문을 달게 되었습니다.
전에 포인터는 산술연산이 가능하지만, 배열은 산술연산이 안된다고 하셨는데요.
여기서 arr은 배열이지만 산술연산이 가능한 것은 함수로 들어오면서 arr이라는 변수명이 포인터처럼 작동하기 때문에 가능한 것이 맞나요?
감사합니다:)
답변 감사드립니다!
<10.4 포인터와 배열> 강의 8:35초 쯤
"배열의 이름이 포인터처럼 사용될 수 있다고 해서, 배열 이름 자체도 산술연산을 할 수 있는 것은 아니다. arr 값이 변하면 메모리를 잃어버릴 수도 있기 때문에, 배열 그 자체를 산술 연산하는 것은 불가능하다. 그러나 포인터로 바꿔준 후에 포인터 변수를 이용해 산술연산을 하는 것은 가능하다. " 라는 내용이 나오는데요.
그러면 "arr 값이 변하면 메모리를 잃어버릴 수도 있기 때문에, 배열 그 자체를 산술 연산하는 것은 불가능하다"이기 때문에, 배열 자체를 건들이지 않는다면 괜찮은 것이니, 다시 말해 "arr += 2 "와 달리 "arr + 2"은 arr 자체를 변화시키지는 않기 때문에 가능한 거 같다는 생각을 해봤는데요.
제 추측이 맞을까요?