[C#] 배열 - 다차원 배열, 가변 배열
C#에는 다차원 배열과 가변 배열이 있다.
두 종류의 배열의 차이와 선언 방법에 대해 간단히 알아보자!
다차원 배열
다차원 배열은 2차원, 3차원,... , n차원의 배열을 뜻한다.
다차원 배열을 보기 전에 먼저 1
차원 배열을 살펴보자.
-
1차원 배열의 문법
타입[] 배열이름 = new 타입[배열크기];
-
1차원 배열의 선언과 동시에 초기화
타입[] 배열이름 = new 타입[] { 요소1,요소2, ...};
// 예시 1
int[] myArray1 = new int[10];
myArray1[1] = 1;
// 예시 2
int[] myArray2 = new int[] {1,2,3,4,5};
// 예시 3
string[] myArray3 = new string[] {"text1","text2","text3"};
다차원 배열은 1차원 배열의 문법에 ,
만 추가해주면 만들 수 있다.
2
차원 배열
2차원 배열은 ,
를 사용하여 2칸을 만들어주면 된다.
-
2차원 배열의 문법
타입[,] 배열이름 = new 타입[행크기, 열크기];
-
2차원 배열의 선언과 동시에 초기화
타입[,] 배열이름 = new 타입[,] { {요소11,요소12,...,},{요소21,요소22,...}, ...};
// 예시 1 - 3x4배열 선언과 사용
int[,] Array3by4 = new int[3, 4];
Array3by4[0, 0] = 0;
Array3by4[2, 3] = 1;
// 예시 2 - 3x2배열 선언과 동시에 초기화
int[,] Array3by2 = new int[,]
{
{ 11, 12 },
{ 21, 22 },
{ 31, 32 }
};
3
차원 배열
3차원 배열부터는 예상할 수 있다.
-
3차원 배열의 문법
타입[,] 배열이름 = new 타입[높이, 행크기, 열크기];
-
2차원 배열의 선언과 동시에 초기화
타입[,] 배열이름 = new 타입[,] { {{요소111,요소112,...}, {요소121,요소122,...}, ...}, {{요소211,요소212,...}, {요소221,요소222,...}}, ...};
// 예시 1 - 5x4x6배열 선언과 사용
int[, ,] array546 = new int[5, 4, 6];
array546[4, 3, 5] = 3;
// 예시 2 - 3x2x2배열 선언과 동시에 초기화
int[, ,] array322 = new int[, ,]
{
{//1,n,m
{ 111, 112 },
{ 121, 122 }
},
{//2,n,m
{ 211, 212 },
{ 221, 222 }
},
{//3,n,m
{ 311, 312 },
{ 321, 322 }
},
};
가변 배열
가변 배열이란 배열의 길이를 바꿀 수 있는 배열이다.
그래서 배열의 배열이라고도 부르는데 아래의 코드를 보며 왜 그렇게 부르는지 알아보자.
3x3 배열을 가변 배열로 만드는 코드를 구경해보자.
// 3x3 가변 배열의 선언
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[3];
jaggedArray[1] = new int[3];
jaggedArray[2] = new int[3];
여기서 가변 배열은 배열(jaggedArray[n])의 배열(new int[n])임을 확인할 수 있다!
가변 배열은 길이를 바꿀 수 있다
정확히 말하면 가변 배열은 차원 단위에서 배열 크기를 바꿀 수 있다는 말이다.
위에서 예시로 제시한 코드 배열마다의 차원의 길이를 모두 3으로 동일하게 설정해서 3x3 2차원 배열(다차원 배열)과 같은 모양으로 만든 것이다.
배열의 차원마다의 길이를 가변 해보자.
다차원 배열의 모양인 3x3 배열이 아니라 각 배열 행(차원)의 크기를 바꿔서 가변 배열의 문법을 익혀보자.
다음은 배열의 0차원, 1차원, 2차원의 크기를 5, 4, 9로 하는 가변 배열을 선언하는 코드이다.
// 가변 배열의 특성
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[9];
// 위 배열의 그림
// [] [] [] [] []
// [] [] [] []
// [] [] [] [] [] [] [] [] []
다차원 배열과 다르게 가변 배열은 2차원 배열을 직사각형이 아닌 막대 그래프처럼 각 차원의 크기를 변형시킬 수 있다는 장점이 있다!
참고
막대 그래프처럼 들쭉날쭉 한 것을 영어로 Jagged라고 하기 때문에 가변 배열을 영어로 Jagged Array라고 한다.
가변 배열도 선언과 동시와 초기화를 할 수 있다.
// 예시 1
int[][] jaggedArray1 = new int[3][]
jaggedArray[0] = new int[] { 11, 12, 13 };
jaggedArray[1] = new int[] { 21, 22, 23, 24 };
jaggedArray[2] = new int[] { 31, 32 };
// 예시 2
int[][] jaggedArray2 = new int[][]
{
new int[] { 11, 12, 13 },
new int[] { 21, 22, 23, 24 },
new int[] { 31, 32 }
};
예시 1
과 예시 2
는 모두 동일한 코드이다.
출처
댓글
이 글 공유하기
다른 글
-
Mac 사용자를 위한 C#으로 개발할 때 좋은 도구
Mac 사용자를 위한 C#으로 개발할 때 좋은 도구
2022.12.13 -
[C# 8.0] Nullable Reference Type이란?
[C# 8.0] Nullable Reference Type이란?
2020.02.29 -
[C#] Nullable (Value Type)
[C#] Nullable (Value Type)
2020.02.26 -
[C#] 구조체(struct)
[C#] 구조체(struct)
2019.07.19