minjeong-oh
기록
minjeong-oh
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • ML & Neural Net (3)
    • ◼️GNN (1)
    • ◼️시계열 (1)
    • ◼️추천시스템 (0)
    • ◼️수학 (3)
    • Data Engineer (2)
    • ◼️Spark (1)
    • ◼️Kafka (1)
    • ◼️Elestic Search (0)
    • ◼️Redis (0)
    • ◼️ClickHouse (1)
    • Programming Language (4)
    • ◼️Git (1)
    • ◼️Python (1)
    • ◼️C++ (33)
    • ◼️Fortran 99 (2)
    • ◼️OpenGL (7)
    • ◼️MFC (35)
    • ◼️Flutter (46)
    • ◼️Kotlin (1)
    • ◼️Android (1)
    • ◼️Java (1)
    • ◼️C (4)
    • Development (0)
    • ◼️디자인패턴 (0)
    • ◼️네트워크 (2)
    • ◼️인증 (1)
    • Computer Science (4)
    • 알고리즘 문제풀이 (12)
    • SQL 고득점 Kit 문제풀이 (8)
    • 취업준비 (0)
    • Notion 정리 글 (1)
    • Article Scrap (3)
      • Careerly - Q&A (7)
      • Careerly - Post (2)
    • 기타 등등 (16)

블로그 메뉴

  • 글쓰기
  • 홈
  • 태그
  • 방명록
  • 편집

공지사항

인기 글

태그

  • 리눅스파티션
  • 티스토리폰트배경색없애기
  • GSLB
  • 구조체배열포인터
  • SpringBootSwagger
  • kafka구축
  • NextJSSwagger
  • 이것이C++이다책참고
  • 인공지능개발자
  • OpenGL회전
  • 구조체매개변수
  • 그램업그레이드
  • API문서정리
  • 그램풀스팩업그레이드
  • 이차원구조체배열포인터
  • AI배워야하나
  • 19년식그램램장착
  • hello테마
  • mfc
  • 19년식그램SSD장착

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
minjeong-oh

기록

C언어 2차원 배열 동적 할당
◼️C

C언어 2차원 배열 동적 할당

2020. 1. 21. 00:11

[방법 1] 2차원 배열을 선언할 때 배열의 크기를 지정해준다.

int arr[2][3];   // 가로 3,세로 2인 2차원배열이 할당된다.

* 배열을 선언할 때 가로 세로의 길이를 변수를 사용하여 지정하는 것은 불가능 하다.

 그래서 malloc()으로 동적 할당을 받아야한다.

int a=2; int b=3;

int arr[a][b] ; //불가능

 

 

[방법 2] malloc( )으로 2차원 배열 공간을 동적 할당한다.

 

(1) malloc으로 2차원 배열 만들기

     :  malloc( ) 을 여러번 호출

        이 방법은 할당과 해제가 번거롭다.

/*2차원 배열 동적할당*/

int width=2; 
int height=3;
int** arr= (int**)malloc((sizeof(int*)*height);

for(int i=0;i<height;i++)
      arr[i] = (int*) malloc(sizeof(int) * width);
      
      
/*할당한 공간 해제*/

for(int i=0; i<height; i++){
    free(arr[i]);
}
free(arr);
//height+1번의 해제를 해줘야한다.

 

(2) 해제를 두 번만 하는 malloc 2차원 배열

<핵심 아이디어>
배열의 크기를 한번에 할당 받는다.

int ** arr = (int**) malloc(sizeof(int*)*a);
arr[0] = (int*) malloc(sizeof(int)*a*b);

for(int =1;i<a;i++)
	arr[i]=arr[i-1]+b;

free(arr[0]);
free(arr);

 

/*2차원 배열 동적 할당*/
int width=2;
int height=3;
int ** arr = (int**)malloc(sizeof(int*)*height);
arr[0]= (int *) malloc(sizeof(int)*height*width);

for(int i=1;i<height;i++)
	arr[i] = arr[i-1]+width;
    
/*2차원 배열 해제*/
free(arr[0]);
free(arr);

출처: https://codeng.tistory.com/8

'◼️C' 카테고리의 다른 글

[C] 구조체 배열에 색상 스펙트럼을 설정하기  (0) 2024.03.11
[C] fgets, fscanf 차이  (0) 2023.12.27
C언어 소수점의 자릿수 구하기  (0) 2023.03.06

    티스토리툴바