포인터 변수는 어떤 값의 주소를 담는 변수이다.
그러면 포인터 변수의 주소를 담는 값도 있지 않을까?
즉, 포인터의 포인터도 있지 않을까?
주소 1048로 찾아가면 double타입의 3.14가 있는데..
주소 1072로 찾아가면 주소 1096이 있다.
주소는 혼자 사용하면 아무 의미가 없다. 의미가 생기려면 1096을 주소로 찾아갔을 때 얻을 수 있는 특정 값을 알 수 있어야 하지 않을까?
포인터의 포인터는 int ** d 처럼 타입과 * 두 개로 표현한다.
변수 d 는 * 타입. 즉, 주소 타입이고, 그 주소를 찾아가면 또 다시 주소가 나오고, 그 주소를 찾아가면 int값이 나온다.. 정도로 생각할 수 있다.
예제를 통해 확실하게 잡고 넘어가자.
포인터의 포인터가 존재함을 알았는데.. 그럼 포인터의 배열도 있을 것 같다.
사실 이미 쓰고 있었다. 문자열을 배열로 다룰 때, 포인터의 배열로 다루었던 적이 있다.
그런데.. char * arr[] 는 char * * arr 로 바꿔 쓸 수 있을 것 같은데..
한 칸 한 칸이 모두 주소를 의미하기 때문에 위와 같이 표현하는 것도 가능하다.
여러 가지 표현방법이 있다는 점을 확인하자.
char타입 뿐만 아니라 다양한 타입에 대해 적용될 수 있다.
포인터의 배열은 포인터의 포인터로 표현할 수 있음에 집중하자.