1115강의 - kyagrd/cprog2018Fall GitHub Wiki

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

// 3차원 배열을 3중 포인터로 접근하도록
int main(void) {
    int m[2][3][2] = { {{10,11},{20,21},{30,31}},
                       {{40,41},{50,51},{60,61}} };

    int *pa0[3] = { m[0][0], m[0][1], m[0][2] };
    int **pp0 = pa0;

    int *pa1[3] = { m[1][0], m[1][1], m[1][2] };
    int **pp1 = pa1;

    int **ppa[2] = { pp0, pp1 };

    int ***ppp = ppa;

    for (int i=0; i<2; ++i) {
        for (int j=0; j<3; ++j) {
            for(int k=0; k<2; ++k) printf("%d ", ppp[i][j][k]);
            printf(",");
        }
        printf("\n");
    }
    return 0;
}


// p. 489
// 이차원 배열을 이중 포인터로 접근하도록
int main2342342888(void) {
    int m[2][3] = { {1,2,3}, {4,5,6} };
    // int *p0 = m[0];
    // int *p1 = m[1];
    // int *pa[2] = { m[0], m[1] }; // { p0, p1 };

    int **pp = malloc(2*sizeof(int*));// = pa;
    for (int i=0; i<2; ++i) pp[i] = m[i];

    for (int i=0; i<2; ++i) {
        for (int j=0; j<3; ++j) printf("%d ", pp[i][j]);
        printf("\n");
    }
    return 0;
}

// p. 638 부터 관련 내용
int main234525235(void)
{
    // int n = 3;
    int *p = malloc(sizeof(int));
    *p = 3;
    int *p1 = p;
    int *p2 = p;
    // ..
    // ..
    printf("%d\n", *p1); //
    printf("%d\n", *p2); //
    free(p1);
    printf("%d\n", *p2); //

    return 0;
}

int main25252423(void)
{
    int n;
    scanf("%d", &n);

    int *p = malloc(n*sizeof(int));
    if (NULL == p) { // 메모리 동적 할당 실패
        printf("malloc fail\n");
        exit(EXIT_FAILURE); // 프로그램 비정상 종료
    }

    for (int i=0; i<n; ++i) { scanf("%d", p+i); }
    for (int i=0; i<n; ++i) { printf("%d,", *(p+i)); }

    printf("\nallocating more memory ...\n");
    int *tmp = p; // 기존 포인터 주소 임시 저장
    p = (int *) malloc(2*n*sizeof(int)); // 2배 공간 새로 할당
    if (NULL == p) {
        printf("malloc fail\n");
        exit(EXIT_FAILURE); // 프로그램 비정상 종료
    }

    // 기존 공간에서 새 공간으로 데이터 복사
    for (int i=0; i<n; ++i) { p[i] = tmp[i]; }
    free(tmp); // 기존 메모리 공간 해제

    for (int i=n; i<2*n; ++i) { scanf("%d", p+i); }

    for (int i=0; i<2*n; ++i) { printf("%d,", p[i]); }
    free(p); // 새 메모리 공간도 해제

    return 0;

#if 0
    // int a[n];
    for (int i=0; i<n; ++i) {
        scanf("%d", &a[i]);
    }

    for (int i=0; i<n; ++i) {
        printf("%d,", a[i]);
    }
#endif
    return 0;
}
⚠️ **GitHub.com Fallback** ⚠️