[열혈C프로그래밍] chapter 15. 포인터의 포인터

chapter 15

포인터의 포인터

포인터의 포인터에 대한 이해(더블 포인터)

int num=2;
int* ptr=#
int** dptr;// int형 이중 포인터
dptr = &ptr;

=>포인터의 포인터는 포인터 변수를 가리키는 또 다른 포인터 변수를 말하고,
위와 같이 *연산자를 두 개 이어서 선언한다. => 포인터 변수도 변수로서 저장할수 있는 수이다. 따라서 당연히 포인터도 주소값이 존재하고 그 주소값을 나타내는게 더블 포인터이다.(포인터의 포인터)


int* arr1[20];  // 길이가 20인 int형  포인터 배열 arr1
double* arr2[10]; // 길이가 10인 double형 포인터 배열 arr2

//arr1의 포인터 형은 int형 더블 포인터
//arr2의 포인터 형은 double형 더블 포인터

=> 포인터 배열의 이름이 가리키는 것은 index = 0인 싱글포인터이므로 포인터 배열의 포인터 형은 더블 포인터일 수 밖에 없다.

포인터의 장점

변수로 접근하는 것보다 포인터로 접근하는게 훨씬빠르다.
왜냐하면 메모리는 주소값으로 이루어져 있고 메모리에 저장되어 있는 어떠한 수를 사용하려면 반드시 주소값을 써야 하는데
변수를 통해 주소값을 알아내어 연산을 하는 것은 아무래도 변수에 접근해야 하기에 오버헤드가 생겨 느리지만
포인터를 사용하면 바로 주소값을 사용할 수 있어 오버헤드 없이 빠르게 연산처리 할 수 있어 포인터를 많이 사용한다.