2차원 배열
C언어에서 2차원 배열을 다루는 것은 프로그래밍의 기본이면서도, 다양한 응용 분야에서 필수적으로 사용되는 중요한 개념이다. 이 글에서는 2차원 배열의 기본적인 사용법, 몇 가지 팁과 코드 예시를 통해 이해를 돕는다.
⭐ 1. 2차원 배열 구조
2차원 배열은 데이터를 행렬의 형태로 저장할 때 사용되며, 타입 배열이름[행의 개수][열의 개수];의 형태로 선언한다. 예를 들어, 3행 4열의 정수형 2차원 배열은 다음과 같이 선언한다.
int matrix[3][4];
⭐ 2. 초기화
2차원 배열은 선언과 동시에 초기화할 수 있다. 배열을 초기화할 때는 중괄호 {}를 사용하여 각 행의 요소를 나열한다.
int matrix[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
⭐ 3. 배열의 접근
2차원 배열의 각 요소에 접근하려면 두 개의 인덱스를 사용한다. 첫 번째 인덱스는 행을, 두 번째 인덱스는 열을 가리킨다. 다음은 2차원 배열의 모든 값을 출력하는 예제이다.
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
⭐ 4. 동적 할당
고정된 크기의 배열 대신, 프로그램 실행 중에 배열의 크기를 결정해야 하는 경우가 있다. 이럴 때는 malloc 또는 calloc 함수를 사용하여 2차원 배열을 동적으로 할당할 수 있다. ex) 행렬 계산
int **matrix = (int **)malloc(3 * sizeof(int *));
for(int i = 0; i < 3; i++) {
matrix[i] = (int *)malloc(4 * sizeof(int));
}
⭐ 5. 배열의 포인터
2차원 배열을 함수의 인자로 전달할 때는, 배열의 포인터를 사용하는 것이 효율적이다. 이를 통해 큰 데이터의 복사 없이 배열에 접근할 수 있다.
#include <stdio.h>
#include <stdlib.h>
void printMatrix(int* matrix[4], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
int main() {
int* matrix[4];
for (int i = 0; i < 4; i++) {
matrix[i] = (int*)malloc(4 * sizeof(int)); // 각 행을 동적으로 할당
for (int j = 0; j < 4; j++) {
matrix[i][j] = i * 4 + j; // 예시 데이터
}
}
printMatrix(matrix, 4);
// 할당 해제
for (int i = 0; i < 4; i++) {
free(matrix[i]);
}
return 0;
}
2차원 배열은 데이터를 구조화하고, 다루는 데 있어 매우 유용하다. C언어를 사용하여 2차원 배열을 효과적으로 활용하려면, 배열의 선언과 초기화, 메모리 할당, 그리고 함수와의 상호작용 방법을 정확히 이해하는 것이 중요하다.
728x90
반응형
'C언어 30강' 카테고리의 다른 글
[C/C++ Tip] 27. C언어 데이터 형식 범위 (0) | 2024.11.11 |
---|---|
[C/C++ Tip] 26. Char, String 기본 사용법 (1) | 2024.11.10 |
[C/C++ Tip] 24. C언어 파일 입출력 (1) | 2024.11.09 |
[C/C++ Tip] 23. 지역 변수, 전역 변수, 정적 변수 (0) | 2024.11.09 |
[C/C++ Tip] 22. C언어 반복문 : While문 (0) | 2024.11.09 |