본문 바로가기

프로그래밍/C 기초

[C언어 강좌] #43 배열과 포인터-2

이번편에서는 배열과 포인터에 대해서 설명하지 못한부분을 마저 설명해드리겠습니다.

42편과 이어지는 내용이므로 먼저 봐주세요.



배열은 상수형태의 포인터라고 저번편에서 설명해드렸습니다.


근데 배열을 참조할때는 뒤에 [i] 를 붙여서 참조합니다.

그리고 배열은 상수형태의 포인터죠. 포인터에도 똑같이 사용할수 있을겁니다.

결국 포인터 뒤에 [i]를 붙이면 해당 주소를 참조할수 있다는 얘기가 됩니다.



*연산자를 쓰지 않고 배열처럼 참조해봤습니다.

[0]은 해당 주소에서 0만큼 이동한다는 얘기니까 결국 그 주소를 참조하는게 됩니다.

그래서 *연산자를 이용했을때와 같은결과가 나왔습니다.



이렇게 배열의 첫번째 주소를 담을경우

포인터변수인 p를 배열처럼 사용하는것도 가능합니다.


포인터를 배열처럼 쓸수 있지만 배열을 포인터처럼 사용도 가능합니다.

배열도 결국 상수 포인터니깐요.

대신 상수기때문에 다른 주소를 넣는것은 불가능합니다.





위 예제처럼 *연산자를 이용해서 참조도 가능하고 증감연산도 포인터의 성질과 똑같습니다.

증가나 감소할때 해당 자료형의 크기만큼 증가하고 감소합니다.


결국 배열은 값을 넣을수 없는 상수 포인터다! 라고 보시면 됩니다.

오직 값을 넣는것만 가능한 void형 포인터와는 반대되는 느낌이죠.