티스토리 뷰

C 언어

C 언어] 2차원 배열 포인터 사용법

철철박사 2024. 10. 21. 19:54
반응형

2차원 배열을 포인터를 사용하는 방법은 다음과 같다.

  • 배열 포인터 사용
  • 이중 포인터 사용

 

 

 

# 배열 포인터 사용

2차원 배열을 가리키는 포인터는 배열 포인터로 사용할 수 있다.

int arr[3][4];
int (*p)[4] = arr;

 

위의 예제에서 p는 배열 포인터가 된다. 배열 포인터를 정의 시 열의 크기(여기서는 4)를 명시해야 한다. 이렇게 만든 배열 포인터는 기존 방식으로 요소에 접근할 수 있다.

p[1][2] = 10;
int a = p[1][2];

 

2차원 배열 포인터를 만든다면 다음과 같이 이중 포인터를 사용해야 한다고 생각할 수 있다. 하지만 arr은 int (*)[4]이기 때문에 int **에 대입할 수 없다.

int **p = arr;  // 에러

 

 

 

# 이중 포인터 사용

이중 포인터를 이용하여 2차원 배열처럼 사용할 수도 있다. 이 방법은 2차원 배열의 크기를 동적으로 할당할 때 주로 사용된다.

int **p;
int rows = 3, cols = 4;

// 메모리 동적 할당
p = (int **)malloc(rows * sizeof(int *));
for (int i = 0; i < rows; i++) {
    p[i] = (int *)malloc(cols * sizeof(int));
}

 

이렇게 만들어진 이중 포인터는 배열처럼 사용하면 된다.

// 사용 예
p[1][2] = 20;
int a = p[1][2];

 

이중 포인터를 사용한 후에는 꼭 메모리 해제를 해야 한다. 이때 각 행의 메모리를 해제한 후 이중 포인터 메모리를 해제해야 한다.

// 각 행의 메모리 해제
for (int i = 0; i < rows; i++) {
    free(p[i]);
}

// 이중 포인터 메모리 해제
free(p);

 

반응형
댓글
공지사항