본문 바로가기

Programming/C Language

포인터와 배열의 관계

이번 공부를 통해 알리고자 하는 내용은 배열 또한 포인터 라는 사실이다.


배열의 이름은 포인터다. 단 , 그 값을 바꿀수 없는 '상수 형태의 포인터'다.


다음 예제를 살펴보고 진행하도록 하자.



(참고로 %p 는 주소값의 출력에 사용되는 서식문자이다.)

정수형 길이3의 배열을 선언과 동시에 초기화 해주었다.
그리고 배열의 각 요소의 주소값들을 출력하고있다.


결과값을 보자!




결과값을 살펴보면 16진수 형태로 출력됨을 알수있으며
동시에 각 요소들의 차는 4byte임을 알 수 있다!
(우리가 선언한 배열은 int형 , int형 자료형은 하나당 4byte의 크기를 갖는다!)
모든 배열의 요소는 메모리 공간에 나란히 할당된다!  라는 점을 몸소 확인하였다.

그리고 배열이름을 출력하는 부분에서 배열의 첫번째 요소 값을 출력함에 의아해하는 분들이 있을것 같다.
배열의 이름은 대입연산의 피연산자가 될 수 없다. ( 값의 저장이 불가하다)
따라서 다음과 같은 결론에 도달할수 있다.


" 배열의 이름은 배열의 시작 주소값을 의미하며 , 그 형태는 값의 저장이 불가한(상수형태의) 상수이다."

정말 중요한 내용이니 꼭 머리에 넣어놓자!

이번엔 배열이름의 포인터 형으로 * 연산을 해보자!






8행에서 포인터 변수의 선언 없이 출력을 시도한다.
앞서 말한것 처럼 배열은 곧 포인터 이므로 전혀 출력에 문제가 없다.

결과값을 살펴보자.




9행~10행에서 배열이름에 값을 증가시킨 후  각 배열의 첫 요소값을 출력했다.
                    이 결과값으로 우리는 배열이름 = 배열의 첫 요소의 주소 임을 다시한번 확인했다!

위 예제를 통해서 배열의 이름도 포인터라는 사실을 충분히 이해하고 확인했다.



'Programming > C Language' 카테고리의 다른 글

포인터 배열  (0) 2017.11.01
포인터 연산  (0) 2017.10.31
포인터 정리  (0) 2017.10.31
char형 배열 , 문자열  (0) 2017.10.31
1차원 배열  (0) 2017.10.31