C언어 독학 포인터 배열
C언어 알고리즘
2015. 9. 14. 19:16
C언어 독학 포인터 배열
■ 포인터도 변수의 메모리 주소를 저장하는 일 종의 변수이다. 그렇기 때문에 이 또한 배열로 저장할 수 있는데 일반 변수의 배열과 크게 다르지 않기 때문에 간단한 예제를 통해서 그 내용을 알아보고 이중 포인터가 필요한 이유에 대해서 정리해본다. 먼저 선언하는 형식은 다음과 같다.
int * aaa[10];
▲ 길이가 10인 int형 포인터 변수이다. aaa가 가리키는 것은 첫 번째 요소 aaa[0]의 주소인데 이는 이는 싱글 포인터의 주소이기 때문에 aaa는 더블 포인터가 된다.
예제에서 확인해본다.
▲ 세 개의 변수를 선언 및 초기화하고 각각의 주소를 가리키는 aa, bb, cc를 선언하고 있다. 그리고 int형 pabc를 선언하고 세 개의 포인터 변수로 초기화하고 있는데 이때 pabc는 aa, bb, cc를 가리키는 더블 포인터가 된다. 그렇기 때문에 dpabc를 선언하고 그곳에 배열 이름을 대입할 수 있는 것이다. 즉, dpabc와 pabc는 같다. 프로그램을 실행하면 당연히 똑같은 값들이 출력될 것이다.
그렇다면 이런 포인터가 필요가 이유는 뭘까? 이는 자료구조를 공부하기 위한 밑거름이라고 생각하면 될듯하다. 자료구조에서는 데이터를 효율적으로 표현하고 저장하는 방법을 공부하게 되는데 이 과정에서 꼭 필요한 것이 포인터인 것이다. 앞으로 계속 정리하면서 계속 정리해본다.