1. C# 배열의 선언 초기화 사용 방법 (Array)
-> 배열이란 ?
: 배열이란 관련있는, 비슷한 데이터를 효과적으로 관리하기 위한 자료구조다.
: 배열을 이용하면 연관되어있는 데이터들을 for문과 결합하여 손쉽게 순회 할 수 있다.
C#에서의 배열 선언 방법
1. 기본 모양
- 자료형[] 변수이름 = new 자료형[N] { 초기화 하거나 안하거나};
2. 배열의 요소 개수를 지정하고 선언과 동시에 초기화 하는 방법
- int[] arr1 = new int[5] { 11, 12, 13, 14, 15 };
3. 배열의 요소 개수를 지정하지 않고 선언과 동시에 초기화 하는 방법
- int[] arr1 = new int[] { 11, 12, 13, 14, 15 };
4. 배열의 요소 개수를 지정하고, 추후에 배열의 인자들을 초기화 하는 방법
- int[] arr3 = new int[5];
for(int i=0; i<5; ++i)
{
arr3[i] = i + 11;
}
-> 배열의 생김새와 접근 방법
- 위에서 선언한 배열을 보면 컴퓨터에 아래와 같이 저장이 된다.
- 이렇게 메모리에 순서대로 값들이 저장이 된다.
- 배열에 저장한 값에 접근을 하기위해서 우리는 index라는 것을 이용할 것인데 "배열의이름[index]"을 이용하여 접근을 할 것이다. 위에서 보는거와 같이 index는 0부터 시작해서 N-1번 까지 존재한다. 즉 여기서 사이즈가 5인 배열을 선언을 했으면 index는 0, 1, 2, 3, 4 까지 존재할 수 있는 것이다.
1) 배열을 사용하지 않았을때,
static void Main(string[] args)
{
int korean = 60;
int english = 50;
int math = 90;
int science = 80;
int history = 30;
int sum = korean + english + math + science + history; //여기!
float average = average = sum / 5;
Console.WriteLine("평균 : " + average);
}
2) 배열을 사용했을때.
static void Main(string[] args)
{
int[] scoreArr = new int[] { 60, 50, 90, 80, 30 };
int sum = 0;
for (int i = 0; i < 5; ++i)
{
sum += scoreArr[i];
//배열은 "변수명[index]"를 통해 접근
}
float average = average = sum / 5;
Console.WriteLine("평균 : " + average);
}
2. C# 다차원 배열의 선언과 사용 방법 (Multi-dimensional Arrays)
-> 다차원 배열이란?
: 2차원 배열은 1차원 배열이 n개가 있는것이고, 3차원 배열은 2차원 배열이 m개가 있는 것이라 생각하면 된다.
: 게임같은데서는 5x5 같은걸 이용해서 빙고판 같은걸 생각하거나 위에서 예를 들었던 성적표를 철수 성적표, 영희 성적표 해서 똑같은게 두세개 있다고 생각하면 된다.
C#에서 다차원 배열 선언방법
1. 기본 모양
- 자료형 [ , , ...] 변수이름 = new 자료형[ , , ...] { 초기화 하거나 안하거나};
2. 2차원 배열 - 선언과 동시에 초기화 하기
- int [ , ] arr1 = new int[2,3] { {31, 32, 33}, {34, 35, 36} };
3. 2차원 배열 선언방법 - 선언 후에 초기화 하기.
- int[,] arr1 = new int[2, 3];
int num = 30;
for (int i = 0; i < 2; ++i)
{
for(int j=0; j<3; ++j)
{
arr1[i, j] = num + 1;
}
}
4. 3차원 배열도 비슷하게 선언하면 된다. (n차원 배열도 마찬가지다.)
- int [, ,] arr3 = new int[2,3,4];
-> 2차원 배열의 생김새와 접근방법
- 위에서 선언 후 초기화한 배열을 보면 아래와 같다.
- 실제 메모리에서는 2차원 배열이라 하더라도 연속적으로 저장이 되지만, 사람이 보기 편하게 아래와 같이 표현을 한다
- 배열에 접근하는 방법은 1차원 배열과 마찬가지로 index를 이용해서 접근하는데 2차원 배열이기 때문에 index가 두개가 있다.
- arr[n, m] 이다. arr[2,3]으로 선언을 했기 때문에
: n의 범위는 0~1 이고
: m의 범위는 0~2 이다.
-> 2차원 배열 코드 예제
static void Main(string[] args)
{
int[,] arrScore = new int[2, 5] { { 90, 80, 70, 42, 30 },
{24, 50, 100, 52, 70} };
int[] arrSum = new int[2] { 0, 0 };
//arrSum 배열에 철수와 영희의 시험점수의 합을 넣는다.
//arrSum[0] 철수
//arrSum[1] 영희
for(int n=0; n<2; ++n)
{
for(int m=0; m<5; ++m)
{
arrSum[n] += arrScore[n, m];
}
}
//평균을 출력
for(int i=0; i<2; ++i)
{
float average = arrSum[i] / 5;
Console.WriteLine("평균[" + i + "] : " + average);
}
}
3. C# 가변 배열의 선언과 사용 방법 (Jagged array)
-> 가변배열이란 ?
: 기본 가변배열을 생각하면 길이가 다양한 1차원 배열들을 가지고 있는 배열이라고 생각하면 된다.
C#에서 가변배열을 선언하는 방법
1. 가변배열의 기본 모양
- 자료형 [][] 변수이름 new 자료형[N][];
: 위와 같으며, N은 1차원 배열들의 개수를 말하고 뒤의 대괄호는 표기하지 않는다. 그 이유는 1차원 배열의 길이가 다 다르기 때문에 표기할 수 없기 때문이다.
2. 가변배열을 선언과 동시에 초기화 하는 방법.
- int [][] jaggedArr = new int[3][]
{
new int[] {31, 32, 33},
new int[] {41, 42, 43, 44, 45, 46, 48, 70, 71, 72, 74, 76},
new int[] {0, 1, 5, 7, 2, 1}
};
3. 가변배열을 선언 후에 따로 초기화 하는 방법.
- int [][] jaggedArr = new int[3][];
- jaggedArr[0] = new int[] {31, 32, 33};
- jaggedArr[1] = new int[] {41, 42, 43, 44, 45, 46, 48, 70, 71, 72, 74, 76};
- jaggedArr[2] = new int[] {0, 1, 5, 7, 2, 1};
4. 다차원 배열을 가지고 있는 가변 배열을 선언과 동시에 초기화 하는 방법
- int [][ , ] jaggedArr2 = new int[3][ , ]
{
new int[ , ] { { 31, 32} , {33, 34}, {35, 36} },
new int[ , ] { { 1, 2, 3, 4} , {5, 6, 7, 8} },
new int[ , ] { { 11, 12, 13, 14}, {15, 16, 17, 18}, {19, 20, 21, 22}, {23,24,25,26} }
};
5. 다차원 배열을 가지고 있는 가변 배열을 선언하고, 따로 초기화 하는 방법
- int [][ , ] jaggedArr2 = new int[3][ , ];
- jaggedArr2[0] = new int[,] { { 31, 32 }, { 33, 34 }, { 35, 36 } };
- jaggedArr2[1] = new int[,] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } };
- jaggedArr2[2] = new int[,] { { 11, 12, 13, 14 }, { 15, 16, 17, 18 }, { 19, 20, 21, 22 }, { 23, 24, 25, 26 } };
-> C#의 가변 배열 사용법 및 생김새
- int [][] jaggedArr = new int[3][]
{
new int[] {31, 32, 33},
new int[] {41, 42, 43, 44, 45, 46, 48, 70, 71, 72, 74, 76},
new int[] {0, 1, 5, 7, 2, 1}
};
- 위 가변배열의 의 모습을 한번 눈에 띄게 표현을 해보면, 아래와 같다.
- 이렇게 jaggedarr[n] 은 각각의 1차원 배열을 가리키며, jaggedarr[n][m]은 n번째 배열의 m번째 인덱스다.
static void Main(string[] args)
{
//가변배열 선언과 초기화
int[][] jaggedArr = new int[3][]
{
new int[] {31, 32, 33},
new int[] {41, 42, 43, 44, 45, 46, 48, 70, 71, 72, 74, 76},
new int[] {0, 1, 5, 7, 2, 1}
};
//가변배열 출력
for(int i=0; i<3; ++i)
{
Console.Write("jaggedArr[" + i + "] : ");
int size = jaggedArr[i].Length; //각 1차원 배열의 길이
for (int j = 0; j < size; ++j)
{
Console.Write(jaggedArr[i][j] + " ");
}
Console.WriteLine(); //한줄 띄어쓰기.
}
}
출처 : [C#] 배열 초기화, 다차원배열, 가변배열에 대해서 (array, jagged array) (tistory.com)
'프로그래밍 언어 > C#' 카테고리의 다른 글
C# foreach 사용법과 다양한 예제 (0) | 2023.01.08 |
---|---|
C# 배열 복사 (0) | 2023.01.08 |
C# 제네릭 형식 제약 조건 (where) (0) | 2023.01.06 |
C# string.format, 문자열 보간($)을 이용한 문자열 출력 방법 (0) | 2023.01.05 |
C# 난수 생성 Random 클래스 (0) | 2022.10.24 |