2008. 8. 19. 13:50

동적 메모리 할당(1차 배열, 2차 배열)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
     char *cp;
     cp = (char*)malloc(sizeof(char)*20);
     strcpy(cp, "Hello World!!!");
     printf("cp = %s\n", cp);
     free(cp);

     int (*arr)[3];
     int i, j;
     arr = (int(*)[3])malloc(sizeof(int)*3*3);
     for(i = 0; i < 9; i++) arr[0][i] = (i+1)*10;

     for(i = 0; i < 9; i++){
          printf("%5d", arr[0][i]);
          if((i+1)%3 == 0) puts("");
     }
     puts("===================");
     for(i = 0; i < 3; i++){
          for(j = 0; j < 3; j++){
               printf("%5d", arr[i][j]);
          }
          puts("");
     }
     return 0;
}

2008. 8. 19. 13:47

1차배열을 포인터를 사용해서 2차 배열로 표현하기

#include <stdio.h>

int main()
{
     int arr[25];
     int (*ap)[5] = (int (*)[5])arr;
     int i, j;

     for(i = 0; i < 25; i++) arr[i] = (i+1)*10;
     for(i = 0; i < 5; i++) ap[i][i] = 0; //*ap[i][i]로 접근하면 에러남!!

     for(i = 0; i < 5; i++){
          for(j = 0; j < 5; j++){
              printf("%5d", ap[i][j]);
          }
          puts("");
     }
     puts("========================");
     for(i = 0; i < 25; i++){
          printf("%5d", arr[i]);
              if((i+1)%5 == 0) puts("");
     }
     return 0;
}