without haste but without rest

[C] 진짜 2차원 배열처럼 동적 할당하는 방법 본문

Computer Science/Data Structure

[C] 진짜 2차원 배열처럼 동적 할당하는 방법

JinungKim 2020. 3. 18. 14:49
Reference - https://plas.tistory.com/129

 

 

진짜 이차원배열처럼 malloc하는 방법

이차원배열을 어떻게 malloc하느냐는 질문을 받았는데, 쉽지 않은 주제네요. 이차원 배열을 함수 매개변수로 넘기는 방법을 먼저 살펴보겠습니다. C 언어에서 2차원 배열은 포인터의 배열이고 각 포인터는 COLS칸..

plas.tistory.com

 

 

#include <stdlib.h>
#include <stdio.h>

int main(void) {
    /*
    진짜 2차원 배열처럼 구현하기


    1. 배열 선언 (5 x 3 배열)
    2. 헤드 포인터 선언
    3. 헤드 포인터 연결
    4. 데이터 입력
    5. 데이터 출력

    */

    int count = 0, i, j;
    int r = 5, c = 3;
    int len = sizeof(int*) * r + sizeof(int) * r * c;
    int** arr = (int**)malloc(len);
    int* ptr = (int*)(arr+r);

    for (i = 0; i < r; i++) {
        arr[i] = (ptr + c * i);
    }

    for (i = 0; i < r; i++) {
        for (j = 0; j < c; j++) {
            arr[i][j] = count++;
        }
    }
    for (i = 0; i < r; i++) {
        for (j = 0; j < c; j++) {
            printf("%d\t", arr[i][j]);
        }
        printf("\n");
    }
    
    for (i = 0; i < c * r + r; i++) {
        printf("%d ", arr[i]);
    }
}

 

 

Comments