지금까지 데이터형, 변환, 예외처리 등을 공부 했다. 하루에 공부하는 양이 많지 않은데다가 C#강좌이긴 하지만 C나 C++을 어느정도 알고 있다는 가정하에 강의를 진행하기 때문에 난해한 부분이 있다. 그렇지만 아직 배워야 할 부분이 많이 있으니 차근차근 익혀나가다 보면 대략적인 지식은 쌓일 것이라고 본다.
오늘은 배열에 대한 공부를 하게 될듯한데 3개의 강의로 나눠져 있는걸보니 시간이 꽤 걸릴듯 하다.
목차
- 일차원 배열
- 이차원 및 다차원 배열
- 가변 배열
- 배열을 인수로 전달
- 배열을 리턴하는 메서드
- 배열의 메서드
일차원 배열
# 기본 개념
같은 데이터형 + 변수명 + 순차적인 메모리 나열
같은 메모리 크기를 가지는 변수들을 순차적으로 늘여쓴것
# 참조형
new를 통해 생성함으로서 메모리를 확보하고 객체로서의 역할을 하게 해줌 (배열을 선언해서 사용)
# Array(객체, 클레스)로부터 파생된 참조형(배열명)
# foreach 사용 가능
foreach 를 통해서 읽는것은 읽기 전용이기 때문에 수정 불가
화면에 뿌리거나 데이터베이스로 보내거나 할 때 사용
# 기본 형식
데이터형[] 배열명;
int[] array_name; //개수를 명시하지 않고 추후 new를 통해서 생성
# 생성과 초기화
int[] array; // 선언 > 초기화
array = new int[] {1,2,3}; // 값(인자)의 개수에 따라 배열 수 결정,
//실수를 줄이기 위해서 개수를 지정하지 않는 경우가 많음
//실수를 줄이기 위해서 개수를 지정하지 않는 경우가 많음
array = new int[3]; // 배열안에는 3개의 0이 들어감
array = new int[3] {1,2,3}; // 선언과 동시에 초기화
선언과 동시에 초기화
int[] array = new int[3] {1,2,3};
int[] array = new int[] {1,2,3}; // 이게 가장 많이 쓰는 형태 일 수 있음
좀더 간결하게 쓸 수 있는 형태
int[] array = {1,2,3};
# Array.Length 속성(속성은 변수나 마찬가지)
Array 클레스를 상속 받음
# foreach
int[] nArray = { 1, 2, 3, 4 }; // new int[] 가 생략된 문법
for (int i = 0; i < 4; i++)
Console.Write("{0}", nArray[i]);
Console.Write('\n');
for(int i = 0; i < nArray.Length; i++) //Length 는 배열의 크기 즉, 개수
Console.Write("{0}", nArray[i]);
Console.Write('\n');
foreach (int m in nArray) // 위 3가지 코드는 모두 1,2,3,4 를 출력하는 코드
Console.Write("{0}",m);
Console.Write('\n');
string[] Days = {"Sun","Mon", "Tue", "Wed", "Thu", "Fri" ,"Sat"};
foreach (string str in Days)
Console.Write(str + " ");
이차원 배열
# 기본 개념
- 2차원 배열은 '행과 열' 이라는 개념으로 구분되는 1차원 배열이나 마찬가지
- 행과 열, 면은 콤마(,)로 구분
- 2차원 배열에서는 행이 먼저 생성, 행을 통해서 열을 나눔, 행을 세부적으로 나눈것이 열
(행의 요소)
- 다차원 배열(3차원 이상)에서 행과 열을 그룹으로 묶은것이 '면'
- 면 > 행 > 열의 순서
# 선언 형식
데이터형[행,열] 배열명; // 참조형을 선언 후 new로 생성
데이터형[,,] 배열명;
# 형식
int[,] array1 = new int [2,2]; // 2행 2열 생성 // 명시를 안하면
int[,,] array2 = new int [2,3,2]; //2면 2행 2열
// new로 생성을 하기 때문에 array1,2에 대한 메모리는 0으로 셋업(몬말인지 모르겠다)
(1)
int [,] array1 = new int[,]{{1,2}, {3,4}};
// new에서[,]를 명시 안하기 때문에 뒤에 나오는 갯수에 따라 생성
int [,,] array2 = new int [,,] { {{1,2}, {3,4}}, {{5,6},{7,8}} };
(2)
int [,] array1 = new int[2,2]{{1,2}, {3,4}};
// 명시를 하지 않는 것이 유동적이고 실수를 줄이기 좋다.
int [,,] array2 = new int [2,3,2] { { {1,2}, {3,4}, {5,6} }, { {7,8},{9,10}, {11,12} } };
(3)
int [,] array2 = { {1,2}, {3,4}, 5,6} };
int [,,] array3 = { { {1,2}, {3,4}, {5,6} }, { {7,8}, {9,10}, {11,12} } };
#이차원과 다차원 배열 사용예
int 형 이차원 배열, 다차원 문자열 배열
static void Main (string[] args)
{
int[,] nArray1 = new int[2, 2];
nArray1[0, 0] = 1;
nArray1[0, 1] = 2;
nArray1[1, 0] = 3;
nArray1[1, 1] = 4;
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
Console.WriteLine(nArray1[i, j] + " ");
Console.Write('\n');
// 2차원 배열
int[,] nArray2 = { { 1, 2 }, { 3, 4 } };
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
Console.WriteLine(nArray1[i, j] + " ");
Console.Write('\n');
// 2차원 배열
string[,,] strArray = { { { "ab", "cd" }, { "ef ", "gh" } }, { { "ij", "kl" }, { "mn", "op" } } };
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
for (int k =0; k<2; k++)
Console.WriteLine(strArray [i,j,k] + " ");
Console.Write('\n');
// 3차원 배열
}
'공부 하기' 카테고리의 다른 글
Library 와 framework의 차이점 5가지 (0) | 2024.04.14 |
---|---|
C#프로그래밍 강좌 따라가기 | C# 기본 문법 (0) | 2018.09.11 |
C#프로그래밍 강좌 따라가기 | 데이터형 (5) - 값 형식과 참조 형식 & 데이터형 정리 (0) | 2018.09.02 |
C#프로그래밍 강좌 따라가기 | 데이터형 (4) - 사용자 지정형 (0) | 2018.08.30 |
C#프로그래밍 강좌 따라가기 | 데이터형 (2) - 데이터 변환 (0) | 2018.08.28 |