이 코드는 이중 포인터를 다루는 예제 코드입니다. 

#include <stdio.h>

int main(void)
{
    char* p[] = { "C", "C++", "C#", "Java" };
    char** pp = p; // 이중 포인터 선언 및 포인터 배열 참조

    //[1] 원본 배열 사용 출력
    for (int i = 0; i < 4; i++)
    {
        printf("p[%d] = %s\n", i, p[i]);
    }

    //[2] 이중 포인터 사용 출력 
    for (int i = 0; i < 4; i++)
    {
        printf("\n*pp = %s", *pp);
        pp++;
    }

    return 0;
}

 

이중 포인터란?

이중 포인터(double pointer)란 포인터를 가리키는 포인터를 의미합니다. 즉, 포인터 변수의 주소를 가리키는 포인터 변수입니다. 이중 포인터는 메모리 주소의 값을 간접적으로 참조하며, 2차원 배열이나 이차원 연결 리스트를 구현하는 데 자주 사용됩니다.

 

char* p[] = { "C", "C++", "C#", "Java" };

문자열 포인터 배열인 p를 선언하고, 초기값으로 "C", "C++", "C#", "Java" 네 개의 문자열을 할당합니다.

 

char** pp = p; // 이중 포인터 선언 및 포인터 배열 참조

p 배열을 가리키는 이중 포인터 pp를 선언합니다.

 

    //[1] 원본 배열 사용 출력

    for (int i = 0; i < 4; i++)

    {

        printf("p[%d] = %s\n", i, p[i]);

    }

배열 p에 저장된 각 문자열을 출력합니다.

 

    //[2] 이중 포인터 사용 출력 

    for (int i = 0; i < 4; i++)

    {

        printf("\n*pp = %s", *pp);

        pp++;

    }

이중 포인터 pp가 가리키는 값, 즉 p[0], p[1], p[2], p[3]의 문자열을 출력합니다. pp를 증가시면서 배열 p의 각 요소를 순서대로 출력합니다.

 

위의 코드는 C언어에서 이중 포인터를 다루는 방법을 보여주는 간단한 예제입니다. 이중 포인터는 포인터를 가리키는 포인터이기 때문에 일반 포인터와는 달리 포인터 변수의 주소를 저장하고, 간접적으로 주소 값을 참조할 수 있습니다. 이러한 특징은 이차원 배열이나 연결 리스트를 구현하는 데 유용하게 사용됩니다. 이 예제 코드를 통해 이중 포인터에 대한 이해도를 높이고, C언어를 더욱 깊이있게 이해할 수 있습니다.

 

 

 

 

Comments


Comments are closed