[c언어] 이중 포인터

C언어에서 이중 포인터란 무엇인가요? 이중 포인터는 메모리 주소를 저장하는 포인터를 가리키는 포인터입니다. 즉, 메모리 주소를 저장하는 포인터를 갖는 포인터입니다.

이중 포인터의 선언과 사용

int main() {
    int num = 10;
    int *ptr; // 포인터
    int **dptr; // 이중 포인터

    ptr = # // num의 주소를 포인터 ptr에 저장
    dptr = &ptr; // ptr의 주소를 이중 포인터 dptr에 저장

    printf("Value of num: %d\n", num);
    printf("Value of num using single pointer: %d\n", *ptr);
    printf("Value of num using double pointer: %d\n", **dptr);

    return 0;
}

위 코드에서 int **dptr은 이중 포인터를 선언하는 부분입니다. dptrptr의 메모리 주소를 저장합니다. 즉, dptrptr의 값을 갖는 포인터입니다.

이중 포인터의 활용

이중 포인터는 다차원 배열동적 메모리 할당과 관련된 작업에서 주로 활용됩니다. 동적 메모리 할당을 통해 이중 포인터를 활용하여 필요한 만큼의 메모리를 동적으로 확보하고, 그 메모리 주소를 가리키는 포인터를 다시 다차원 배열에 할당할 수 있습니다.

요약

이중 포인터는 메모리 주소를 저장하는 포인터를 가리키는 포인터이며, 다차원 배열 및 동적 메모리 할당에서 유용하게 활용됩니다.

이중 포인터에 대한 자세한 내용은 K&R의 “The C Programming Language”나 “C Programming: A Modern Approach” 같은 책을 참고하시기 바랍니다.