mallac를 사용한 2차원배열
- C 스타일 -
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int **array;
int a, b, i, j;
printf("Input The Numbers : "); /* 행과 열의 수를 입력 받음 */
scanf("%d %d", &a, &b);
// 생성
array = (int **)malloc( sizeof(int) * a); /* 행의 수만큼 동적으로 할당함 */
for (i = 0; i < a; i++) /* 열의 수만큼 각 행에 동적으로 메모리 공간을 할당함 */
{
array[i] = (int*)malloc(sizeof(int) * b);
}
// 값 대입
for (i = 0; i < a; i++) /* 루프를 돌면서 각 행과 열에 값을 입력받음 */
{
for (j = 0; j < b; j++)
{
printf("Input Num \n%d, %d : ", i, j);
scanf("%d", &array[i][j]);
}
}
// 출력
for (i = 0; i < a; i++) // 입력받은 값을 출력함.
for ( j = 0; j < b; j++)
printf("%d %d : %d \n", i,j, array[i][j]);
// 할당 해제
for (i = 0; i < a; i++) // 열에 해당하는 메모리 공간 해제
free(array[i]);
free(array); // 행에 해당하는 메모리 공간 해제
return 0;
}
[출처] 2차원 배열의 동적할당(malloc)|작성자 이태우
- C++ 스타일 -
2차원 배열을 선언 하실려면..
int row = 5, col = 5;
int** test;
test = new int*[row];
for(int i=0; i<row; i++)
test[i] = new int[col];
선언된 배열을 지울 때는
for(int i=0; i<row; i++)
delete[] test[i];
delete[] test;
와 같은 방식으로 선언하셔야 합니다.
[출처] 다차원 배열 동적 선언 (C++)|작성자 수봉