C 기본 문법 – 배열 – 1편: 다차원 배열 완전 정복
안녕하세요, 여러분! 😊
이제 C 언어의 배열 개념이 조금씩 익숙해지셨죠?
지난 시간에는 1차원 배열을 배웠다면,
이번에는 그 한 발짝 더 나아가 다차원 배열, 특히 2차원 배열을 중심으로 배워보겠습니다!
🧠 다차원 배열은 마치 행과 열이 있는 표, 혹은 엑셀 시트와 같아요.
숫자들이 줄줄이 나열된 1차원 배열과 달리, 행렬 형식으로 데이터를 표현할 수 있답니다!
이제부터 다차원 배열의 선언, 초기화, 접근 방법, 반복문 활용법 등
실전에서 정말 많이 쓰이는 내용을 꼼꼼하게 알려드릴게요 💪
다차원 배열이란?
- 2차원 배열은 **행(row)과 열(column)**을 가진 데이터 표!
- 3차원 이상도 가능하지만, 대부분은 2차원까지만 자주 사용됩니다.
- 메모리상에서는 1차원처럼 연속으로 저장되지만, 표처럼 다룰 수 있음이 핵심입니다.
1. 2차원 배열 선언 방법
자료형 배열이름[행의 개수][열의 개수];
예시:
int matrix[3][4];
🎯 3행 4열의 정수 배열, 즉 총 12개의 정수 공간이 생성됩니다!
2. 2차원 배열 초기화
(1) 직접 지정 초기화
int matrix[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
행별로 중괄호를 써서 명확하게 초기화 가능해요!
(2) 한 줄로 초기화
int matrix[2][3] = {1, 2, 3, 4, 5, 6};
행/열 순서대로 쭉 채워집니다.
(3) 일부만 초기화
int matrix[2][3] = {1, 2};
나머지는 자동으로 0으로 채워져요!
3. 배열 요소 접근 방법
matrix[0][0] = 10;
matrix[1][2] = 30;
[행][열]
순서로 접근합니다!
예시 출력
printf("%d
", matrix[1][2]); // 30 출력
4. 2차원 배열과 중첩 반복문
2차원 배열은 2중 for문과 찰떡궁합이에요!
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("matrix[%d][%d] = %d
", i, j, matrix[i][j]);
}
}
🎯 i는 행, j는 열을 의미해요!
5. 2차원 배열 예제: 성적표
int scores[2][3] = {
{85, 90, 95}, // 1번 학생
{70, 80, 90} // 2번 학생
};
for (int i = 0; i < 2; i++) {
int sum = 0;
for (int j = 0; j < 3; j++) {
sum += scores[i][j];
}
float avg = sum / 3.0;
printf("%d번 학생 평균: %.2f
", i + 1, avg);
}
💡 학생별 점수 평균을 계산하는 실제적인 예제예요!
6. 배열 초기값 없이 값 입력받기
int data[2][2];
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
printf("[%d][%d]번째 값 입력: ", i, j);
scanf("%d", &data[i][j]);
}
}
✨ 사용자로부터 값 입력받아 배열을 채울 수도 있어요!
7. 다차원 문자 배열
문자열 여러 개를 저장할 때도 2차원 배열을 써요!
char fruits[3][10] = {"apple", "banana", "grape"};
for (int i = 0; i < 3; i++) {
printf("%s
", fruits[i]);
}
fruits
는 3개의 문자열(최대 9글자+널문자) 저장 가능
8. 3차원 배열 맛보기
int cube[2][3][4];
- 2개의 면
- 각 면은 3행 4열
📌 게임 좌표, RGB 이미지 데이터 등에서 사용될 수 있어요.
✅ 다차원 배열 요약 정리
항목 | 설명 |
---|---|
선언 방법 | 자료형 배열[행][열]; |
접근 방법 | [행인덱스][열인덱스] |
초기화 | { {a, b}, {c, d} } 또는 {a, b, c, d} |
반복 처리 | 이중 for문으로 순회 |
실전 활용 | 표, 행렬, 게임맵, 성적표 등 |
⚠️ 다차원 배열 사용 시 주의할 점
주의사항 | 설명 |
---|---|
인덱스 순서 헷갈림 주의 | [행][열] 순서, 반대로 쓰면 오류 발생 가능 |
범위 초과 접근 주의 | matrix[3][4] 인데 matrix[3][4] 는 오류! |
초기화 시 중괄호 잘 쓰기 | {} 를 제대로 사용하지 않으면 의도치 않은 값 배치 가능 |
메모리 사용량 주의 | 행렬 크기 커지면 메모리 부족 발생 가능 |
마무리하며 💬
오늘은 C 언어에서 표 형태의 데이터 처리에 필수적인 2차원 배열을 배워봤습니다!
1차원 배열만으로는 부족한 정보 표현을
2차원, 나아가 다차원 배열로 더 정돈되고 효율적으로 할 수 있죠 😊
🎯 행과 열이 있는 데이터? 무조건 2차원 배열을 떠올려보세요!
다음 시간에는 배열과 관련된 문자열 처리와
배열과 함수의 관계 등에 대해서도 더 알아볼 수 있어요!
오늘도 끝까지 함께해 주셔서 감사합니다 🙌
코딩은 차곡차곡 쌓아가며 배우는 여정이에요 💻✨