Taking baby-developer steps
14. 동적 메모리 할당 - 2차원 배열 본문
동적 메모리 할당을 이용해 2차원 배열을 만들면, 정확히 필요한 만큼만 그때 그때 효율적으로 만들어서 사용가능하다.
#include <stdio.h>
#include <stdlib.h>
int main(void){
int** p = (int**)malloc(sizeof(int)*3);
for (int i=0; i<3; i++){
*(p+i) = (int*)malloc(sizeof(int)*3);
}
for(int i = 0; i<3; i++){
for(int j=0; j<3; j++){
*(*(p+i)+j) = i*3 + j;
}
}
for(int i=0; i<3; i++){
for(int j=0; j<3; j++){
printf("%d",*(*(p+i)+j));
}
printf("\n");
}
system('pause');
return 0;
}
프로그램이 종료되는 순간, 메모리 해제가 자동적으로 되므로, 이런 간단한 예제에선 굳이 free()함수를 하지않아도 상관 없다.
먼저, 이중포인터를 이용해, 3개의 행만큼 들어갈 수 있도록 메모리를 할당했다. 이때 sizeof(int)이 자체가, 1차원 배열의 시작점을 가리키는 포인터 이다. 그 후, for문을 이용해 각각의 행에 들어갈 3개의 열을 만들었다.(메모리를 할당했다)
그 후 이중 for문을 이용해, 특정 행(i)의 몇번째 열(j)에 값을 넣어주고, 다시한번 2중 for 문으로 각각의 원소를 차례대로 출력하였다. 그 결과는 다음과 같다.
012
345
678
'문제풀이연습 > C언어 예제풀이 연습' 카테고리의 다른 글
C언어-자료구조 / 2. 배열기반의 리스트 - 특정한 위치 원소 삭제하는 함수 (0) | 2021.03.25 |
---|---|
C언어 자료구조 / 2. 배열기반 리스트 - 원소 추가 및 출력 함수 만들기 (0) | 2021.03.25 |
C언어 / 4. 연산자-1 (0) | 2021.03.19 |
Comments