[ 개념 ]
지금까지 자료형으로 변수를 선언하는 것을 알아보았다.
이렇게 선언한 변수는 하나의 데이터만을 저장할 수 있다.
그런데 저장하려는 데이터가 많으면 일일히 변수를 선언해야하는 번거로움이 있다.
그렇다면 하나의 변수에 여러 데이터를 저장할 수 있는 방법이 있을까?
바로 배열이 있다.
배열은 여러 데이터를 저장할 수 있는 자료형이다.
자료형[] 변수명 = new 자료형[크기];
일반 변수와 같이 선언하는데 자료형 뒤에 []을 붙여줘야한다.
변수명 뒤에 [] 안에는 숫자를 삽입할 수 있는데 이를 인덱스라고한다.
인덱스는 배열의 공간을 의미한다.
new는 인스턴스를 생성하는 명령어로써 메모리에 할당하게 된다.
new 명령어는 나중에 설명하도록 하겠다.
그리고 해당 자료형으로 원하는 크기만큼 선언해주면된다.
int[] a=new a[10];
위의 코드는 “10크기의 int형 배열을 선언한다”라는 의미이다.
물론 많은 데이터를 담을 수 있다고해서 무조건 배열로 선언하는건 좋지 않다.
배열은 꽤 많은 메모리를 할당하기 때문에 메모리 공간을 많이 잡아먹을 수 있다.
int[] a=new a[10];
위의 코드가 할당하는 메모리의 크기는 4byte(int형의 크기) * 10 = 40byte이다.
그래서 자신이 얼마나 사용할건지 알고 배열을 선언하는 것이 중요하다.
[ 배열의 값 배정 ]
배열에 값을 배정하는 방법에는 여러가지가 있다.
1. 원하는 값을 원하는 공간에 저장하는 방법
int[] a=new a[3];
a[0]=1;
a[1]=2;
a[2]=3;
[]안에 넣을 수 있는 숫자인 인덱스로 배열의 공간에 접근할 수 있다.
여기서 배열을 사용할 때 주의할 점은 인덱스는 0부터 시작한다.
a[0]=1;은 “a라는 배열의 첫번째 공간에 1이라는 숫자를 대입한다”를 의미한다.
다음 코드들도 이와같다.
2. 일련의 데이터를 한 번에 저장하는 방법
int[] a1=new a1[3] {1,2,3};
string[] a2 = new a2[3] {“hi”, “hello”, “world”};
위의 코드와 같이 변수선언후 중괄호{}안에 입력하고자하는 여러개의 데이터를 넣는 방법이 있다.
[ 배열 값 출력 ]
static void Main(string[] args)
{
int[] arr1 = new int[2] { 1, 2 };
double[] arr2 = new double[2] { 1.1, 2.2 };
string[] str = new string[2] { "hello", "world" };
Console.WriteLine("arr1[0]: " + arr1[0]);
Console.WriteLine("arr1[1]: " + arr1[1]);
Console.WriteLine("arr2[0]: " + arr2[0]);
Console.WriteLine("arr2[1]: " + arr2[1]);
Console.WriteLine("str[0]: " + str[0]);
Console.WriteLine("str[1]: " + str[1]);
}
출력도 값을 배정하는 방식과 동일하게 원하는공간을 출력해주면된다.
나중에 반복문을 배우면 편리하게 출력하는 방법도 소개하겠다.
[ 다차원 배열 ]
우리가 지금까지 써온 배열은 1차원 배열로써 한 줄의 순차적인 데이터로 저장해왔다고 생각하면 편할 것이다.
그러나 배열은 2차원, 3차원 등 다차원 배열이 있다.
실질적으로는 한 줄의 데이터지만 사람이 보기 편하게 위의 사진과 같이 표현하였다.
2차원 배열의 경우 아래와 같이 사용하면 된다.
자료형[ , ] 변수명[세로길이(행), 가로길이(열)]
ex) int[,] arr = new int[3,4];
static void Main(string[] args)
{
int[,] arr = new int[3, 4] {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8, },
{ 9, 10, 11, 12 }
};
}
위와 같이 중괄호{}을 통해 구분하여 선언하면 된다.세로길이(행)이 3이므로 3개의 중괄호가 들어가며,가로길이(열)이 4이므로 하나의 중괄호에 4개의 요소가 들어간다.
int[,] arr1 = new int[,] {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8, },
{ 9, 10, 11, 12 }
};
배열의 크기를 지정해주지 않아도 요소만 넣어서 배열의 크기를 정해줄 수 있다.
배열의 접근방식은 아래의 사진을 참고하면된다.
static void Main(string[] args)
{
int[,] arr = new int[3, 4] {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8, },
{ 9, 10, 11, 12 }
};
Console.WriteLine("arr[0,0]: " + arr[0, 0]); //1행 1열
Console.WriteLine("arr[1,1]: " + arr[1, 1]); //2행 2열
Console.WriteLine("arr[2,1]: " + arr[2, 1]); //3행 2열
Console.WriteLine("arr[2,3]: " + arr[2, 3]); //3행 4열(배열의 마지막)
}
(참고로 배열의 시작 인덱스는 0이므로 선언할때의 숫자와 출력할때의 숫자와 헷갈리지 말자!)
3차원 배열부터는 사용을 잘 안하지만 사용법에 대해서만 간단히 설명하겠다.
static void Main(string[] args)
{
int[,,] arr2 = new int[2, 2, 2] {
{
{ 1, 2 },
{ 1, 2 }
},
{
{ 1, 2 },
{ 1, 2 }
}
};
Console.WriteLine("arr[0,0,0]: " + arr[0, 0 ,0]);
Console.WriteLine("arr[1,1,1]: " + arr[1, 1 ,1]);
}
초기화와 접근방식은 2차원 배열과 동일하다.
[ 참고 ]
'C#문법' 카테고리의 다른 글
[C#문법] Part7-2 조건문: switch 조건문 (1) | 2023.01.31 |
---|---|
[C#문법] Part7-1 조건문: if 조건문 (3) | 2023.01.31 |
[C#문법] Part5-6 연산자:기타연산자(삼항연산자) (6) | 2023.01.24 |
[C#문법] Part5-5 연산자:비트연산자 (2) | 2023.01.24 |
[C#문법] Part5-4 연산자:비교연산자 (5) | 2023.01.21 |