힌트

배열과 포인터의 관계성에 대해 알아보기 전에 먼저 재미있는(?)실험을 한가지 해보자.
배열의 요소를 참조해야할 때 맨 앞부분의 요소를 찾기 위해서는 어떻게 해야할까?
그냥 배열의 이름을 사용하여 참조를 하여도 된다.

그러나 다른 점도

유의할 것은 배열의 이름이 포인터로 쓰인다고 해도 우리가 알고있는 포인터와는 다르다.
우리가 알고있는 일반적인 포인터는 변수인 반면 배열의 이름인 arr은 상수이다.
상수의 주된 특징 중 하나는 값을 변경할 수 없다는 것인데, 배열의 이름의 경우 상수이기 때문에 가리키고 있는 배열의 이름을 통해 배열의 주소를 변경하는 것은 불가능하다.

배열의 이름으로 포인터를

배열의 이름은 포인터를 배열의 이름으로 사용하는 것도 가능하며, 배열의 이름을 포인터처럼사용하는 것 역시 가능하다.
그러나, 공통적인 속성을 가지고 있더라도 선언을 하는 방식 및 사용 방법에 대해서는 약간의 차이가 존재한다.

배열과 포인터의 상관관계 정리

배열의 이름을 포인터처럼 사용하면, 자연스럽게 첫번째 요소의 주소값을 불러온다.
또한, 배열은 연속선상으로 놓인 메모이므로 다른 포인터와 동일하게 정수만큼을 더하거나 하는 방식으로 참조하는 것 역시 가능하다.
즉 배열은 포인터로 하는 산술 연산등을 적용 가능하며, 결과 역시 동일하게 나온다.

총 정리

  • 배열은 포인터처럼 작동
    베열의 이름은 배열 첫 요소의 주소를 나타낸다.
    이후 산술 연산 역시 포인터처럼 연산하는 것이 가능하다.
  • 배열은 수정 불가
    배열은 pointer과 달리 상수이다.
    따라서 컴파일이 끝나기 전까지는 값의 변경은 불가능하다.

댓글남기기