티스토리 뷰
반응형
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);
반응형
'C 언어' 카테고리의 다른 글
C 언어] 2차원 배열을 함수의 매개변수로 사용하는 방법 (0) | 2024.10.21 |
---|---|
C 언어] 포인트 상수 / 상수 포인터 / 상수 포인터 상수 (0) | 2024.10.21 |
댓글
공지사항