// Visual Studio 2022 x86(32비트) 기준
// 2차원 배열
#include "pch.h"
#include <stdio.h> // printf 함수를 사용하기 위해
int main()
{
// 1차원 배열 선언 -> 그룹 짓는 기준이 1가지인 것
char data[6] = { 10, 11, 12, 13, 14, 15 };
// 2차원 배열 선언 -> 그룹 짓는 기준이 2가지인 것
// 2 * 3 형태의 2차원 배열(x그룹: 2, y그룹: 3)
// 시작 좌표는 (0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)
// c언어가 2차 표기를 쉽게 하도록 만들어 준 것(컴파일 시 1차로 다시 바꿈)
// 2차원 배열로 메모리를 관리할 때 선상에서 동일하게 관리하는 쪽이 훨씬 더 쉬우므로 보통 [y][x]로 많이 쓴다.
// 2차원을 1차원으로 다시 생각할 때 자릿수 진법 계산을 생각하면 됨
// 여기 2차원 배열에서 3항목이 끝나면 다른 그룹으로 넘어감
// 따라서 그룹 식: 1 * 3 + 2
char temp[2][3] = { {10, 11, 12}, {13, 14, 15} };
// group_id -> y, index -> x
char temp_array[3][2] = { {10, 11}, {12, 13}, {14, 3} };
// 배열 값들의 합을 구해보기(그룹 짓는 항목이 1개)
int sum1 = data[0] + data[1] + data[2] + data[3] + data[4] + data[5];
sum1 = 0;
for (int i = 0; i < 6; ++i)
sum1 += data[i];
printf("%d\n", sum1);
int sum2 = temp[0][0] + temp[0][1] + temp[0][2]
+ temp[1][0] + temp[1][1] + temp[1][2];
sum2 = 0;
for (int y = 0; y < 2; ++y) {
for (int x = 0; x < 3; ++x) {
sum2 += temp[y][x];
}
}
printf("%d\n", sum2);
int sum3 = temp_array[0][0] + temp_array[0][1] + temp_array[1][0]
+ temp_array[1][1] + temp_array[2][0] + temp_array[2][1];
sum3 = 0;
for (int y = 0; y < 2; ++y) {
for (int x = 0; x < 2; ++x) {
sum3 += temp_array[y][x];
}
}
printf("%d\n", sum3);
sum2 = 0;
// 그룹을 1개로 지어서 temp[0][0] ~ temp[0][5] 이렇게 표현
// 하지만 쓸데 없이 반복할 때마다 0을 곱하기에 메모리에 쓸데 없는 낭비
for (int i = 0; i < 6; ++i)
sum2 += temp[0][i];
printf("%d\n", sum2);
for (int i = 0; i < 6; ++i)
sum3 += temp_array[0][i];
printf("%d\n", sum3);
// 차원 공식
// 요구 기준: 2차 -> 1번 그룹, 2번 항목에 3을 대입(2차 -> 1차)
// group_id, index, num -> temp[group_id][index] = num;
// -> data[group_id * 3 + index] = num;
// 요구 기준: 1차 -> 5번 항목에 3을 대입(1차 -> 2차)
// index, num -> data[index] = num;
// -> temp[index/3][index%3] = num;
// 프로그램 종료
return 0;
}
// 1번 그룹의 2번 항목에 5를 대입하라
// 개발자가 선언한 배열은 1차원이다.
char temp[1][2] = 5;
// group_id(y) * 3(원소 개수) + index(x)
char data[1 * 3 + 2] = 5;
char data[5] = 5;
// 4번 항목에 4를 대입하라.
// 개발자가 선언한 배열은 2차원이다.
char data[4] = 4;
// index / 3(원소 개수) -> group_id
// index % 3(원소 개수) -> index
char temp[6 / 3][6 % 3]
char temp[2][0] = 4;
sum2 = 0;
for(int y = 0; y < 6; ++y)
{
sum += temp[0][i];
}
본 게시글은 금배씨 영상 중 "2차원 배열"을 참조하여 작성되었습니다.