c·c++/c 프로그래밍

이차원 배열을 동적으로 선언하여 사용하기

바로이순간 2011. 12. 8. 12:51

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

 

void test(double *a[], int rows, int cols) {
  int i, j;
  for(i=0;i<rows;i+=1) {
    for(j=0;j<cols;j+=1) {
      printf("%lf ", a[i][j]);
    }
    printf("\n");
  }
}

 

int main() {
  double *ptr;
  double **arrayA, **arrayB;
  int i, j, rows, cols;
  char ch;
 
  printf("Give rows and cols in Array: ");
  fflush(stdin);
  scanf("%d %d", &rows, &cols);  // 입력은   10 20 과 같이 한 칸을 띄운다.
  printf("rows: %d cols: %d \n", rows, cols);

 

  arrayA=(double **)malloc(rows*sizeof(int));
  arrayB=(double **)malloc(rows*sizeof(int));

 

  ptr=(double *)malloc(rows*cols*sizeof(double));
  for(i=0;i<rows;i+=1) {
    arrayA[i]=(double *)(ptr+i*cols);
  }

 

  for(i=0;i<rows;i+=1) {
    for(j=0;j<cols;j+=1) {
      arrayA[i][j]=(double)(1+i+j)/11.2;
    }
  }

 

  for(i=0;i<rows;i+=1) {
    for(j=0;j<cols;j+=1) {
      printf("%lf ", arrayA[i][j]);
    }
    printf("\n");
  }

 

  printf("*********************************************\n");
  test(arrayA, rows, cols);
  printf("*********************************************\n");

 

  return 0;
}