IT기초/C 언어

[C언어] 이중포인터 사용법 - 예제 코드 포함

ITtechRoy 2023. 9. 6. 14:08
728x90
반응형

 

C 언어로 이중 포인터 활용하기 - 초급 예제

이 예제에서는 C 언어에서 이중 포인터를 정의하고 활용하는 방법을 알아보겠습니다. 이중 포인터는 포인터의 포인터로, 메모리 주소를 참조하는 데 더 복잡한 구조를 사용할 때 유용합니다.

예제 1: 이중 포인터로 배열 요소 출력

이중 포인터를 사용하여 배열 요소를 출력하는 C 프로그램의 예제 코드입니다:

#include 

void printArray(int **arr, int rows, int cols) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
}

int main() {
    int row = 3, col = 3;
    int **matrix;

    // 이중 포인터에 메모리 할당
    matrix = (int **)malloc(row * sizeof(int *));
    for (int i = 0; i < row; i++) {
        matrix[i] = (int *)malloc(col * sizeof(int));
    }

    // 배열 초기화
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            matrix[i][j] = i * col + j + 1;
        }
    }

    printf("배열 요소 출력:\n");
    printArray(matrix, row, col);

    // 메모리 해제
    for (int i = 0; i < row; i++) {
        free(matrix[i]);
    }
    free(matrix);

    return 0;
}
    

예제 2: 이중 포인터로 동적 배열 생성

이중 포인터를 사용하여 동적으로 배열을 생성하고 값을 입력하는 C 프로그램의 예제 코드입니다:

#include 

int main() {
    int row = 2, col = 4;
    int **matrix;

    // 이중 포인터에 메모리 할당
    matrix = (int **)malloc(row * sizeof(int *));
    for (int i = 0; i < row; i++) {
        matrix[i] = (int *)malloc(col * sizeof(int));
    }

    // 배열 초기화
    printf("배열 요소 입력:\n");
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            scanf("%d", &matrix[i][j]);
        }
    }

    printf("배열 요소 출력:\n");
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }

    // 메모리 해제
    for (int i = 0; i < row; i++) {
        free(matrix[i]);
    }
    free(matrix);

    return 0;
}
    

예제 3: 이중 포인터로 문자열 배열 다루기

이중 포인터를 사용하여 문자열 배열을 다루는 C 프로그램의 예제 코드입니다:

#include 

int main() {
    int numStrings = 3;
    char *strings[] = {"Hello", "World", "CProgramming"};

    printf("문자열 배열 출력:\n");
    for (int i = 0; i < numStrings; i++) {
        printf("%s\n", strings[i]);
    }

    return 0;
}
    

예제 4: 이중 포인터로 정수 배열 정렬

이중 포인터를 사용하여 정수 배열을 오름차순으로 정렬하는 C 프로그램의 예제 코드입니다:

#include 

void sortArray(int **arr, int rows, int cols) {
    // 정렬 알고리즘을 사용하여 배열 정렬
    // (여기서는 생략하고 정렬된 배열을 가정합니다)
}

int main() {
    int row = 3, col = 3;
    int **matrix;

    // 이중 포인터에 메모리 할당 및 배열 초기화

    printf("정렬 전 배열:\n");
    printArray(matrix, row, col);

    // 배열 정렬
    sortArray(matrix, row, col);

    printf("정렬 후 배열:\n");
    printArray(matrix, row, col);

    // 메모리 해제

    return 0;
}
    

예제 5: 이중 포인터로 동적 2D 배열 생성

이중 포인터를 사용하여 동적으로 2D 배열을 생성하고 값을 입력하는 C 프로그램의 예제 코드입니다:

#include 

int main() {
    int row = 2, col = 3;
    int **matrix;

    // 이중 포인터에 메모리 할당 및 배열 초기화

    printf("배열 요소 입력:\n");
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            scanf("%d", &matrix[i][j]);
        }
    }

    printf("배열 요소 출력:\n");
    printArray(matrix, row, col);

    // 메모리 해제

    return 0;
}
    
728x90
반응형