CSharp 배열

양승준·2025년 3월 30일

CSharp

목록 보기
9/20
post-thumbnail

시작하며

배열, 배열하면 무엇이 떠오르는가? 컴퓨터를 잘 모르는 사람에게는 여러 개의 사물 같은 것을 일정한 순서로 나열 하는 것을 떠오를 것이다. 또는 배열을 "순서대로 나열하세요" 는 말을 사용하지 "배열하세요" 라는 말은 사용이 적다. 그래서 아에 생각이 않나는 경우도 많은 것이다.

그래서 오늘 설명할 것을 생소할 수 도 있는 배열을 컴퓨터 프로그래밍에서는 어떻게 사용하는지와 간단한 설명을 다룰 것이다.

간단한 정의

  • 컴퓨터의 배열 정의?
    • 배열은 번호와 번호에 대응하는 데이터들로 이루어진 자료 구조를 나타내는 것
  • 프로그래밍적 배열 정의?
    • 지정한 자료형 타입의 값들을 담는 공간을 이어서 선언된 공간의 형태

로 정의 되어있다.


설명

기본적으로 배열은 지정한 자료형 타입의 값들을 넣을 수 있는 공간을 이어서 선언된 공간의 한 형태이다.
배열 이미지0

int[] array = new int[5]; // 0 ~ 4 까지의 공간

배열의 공간의 첫번째는 0번지라고 한다. 만약 크기가 5인 배열이 있다면 첫번째는 0번이고 마지막은 4번지이다.
이렇게 0, 1, 2, 3, 4로 5개의 연속된 공간이 생성된 것이다.

그럼. 그 안에 접근하려면?

int[] array = new int[5]; // 0 ~ 4 까지의 공간
array[0] = 10;
array[1] = 20;
array[2] = 30;
array[3] = 40;
array[4] = 50;
// array[5] = 50; // Compilation Error!!!!!!

위와 같이 접근을 해주면 된다. [] 대괄호 안에 알맞은 인덱스(번지)를 넣어서 접근하여 사용이 가능하다.


그럼 이렇게 설명을 들어 알 수 있는 것들은

1. 지정한 자료형의 타입들만 넣을 수 있다.
2. 공간은 쭉 이어진 형태로 공간이 할당된다.
3. 배열의 첫번째 번지는 0이고 0을 포함한 크기 만큼 번지가 생긴다. (0 ~ n-1)
4. 배열에 접근하여 사용하고 싶다면, [] 를 사용하여 알맞은 범위의 번지를 입력하여 사용한다.


사용법

그럼? 어떤식으로 사용할까?

🧪 기본 구조 코드

기본 선언 및 공간 설정

// 기본 선언 및 공간 설정
자료형[몇 차원 배열인지 ',' 를 통해서 진행] 배열이름 = new 자료형[배열의 공간 숫자];
> int[] arr = new int[5];
> int[,] arr = new int[2, 5];
> int[,,] arr = new int[5, 5, 5];

요소를 직집 넣어서 선언과 즉시 초기화 진행

// 요소를 직집 넣어서 선언과 즉시 초기화 진행 
자료형[몇 차원 배열인지 ',' 를 통해서 진행] 배열이름 = {',' 를 통해서 요소를 넣어줄 수 있음};
> float[] arr = {5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f};
> float[,] arr = { {1.0f, 2.0f, 3.0f}, {4.0f, 5.0f, 6.0f} };
> float[,,] arr = { 
  	{ 
      	{1.0f, 2.0f}, 
      	{3.0f, 4.0f} 
   	}, 
	{ 
   		{5.0f, 6.0f}, 
        {7.0f, 8.0f} 
	} 
};

가변 배열 선언 및 초기화

// 가변 배열 선언 및 초기화
// 배열 안에 배열이 들어 있는 구조에서, 각 하위 배열의 길이는 다를 수 있음.
// 아래와 같이 2번째를 공란으로 두었을 때 가능함.
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[] { 1, 2 };
jaggedArray[1] = new int[] { 3, 4, 5 };
jaggedArray[2] = new int[] { 6 }



🧪 MS문서 기본 코드

// int 형인 정수형 배열 공간 5개를 만든다.
int[] array1 = new int[5];

// 배열 요소 값을 선언하고 초기화한다.
int[] array2 = [1, 2, 3, 4, 5, 6];

// 다차원인 2차원 배열을 선언한다.
int[,] multiDimensionalArray1 = new int[2, 3];

// 배열 요소 값을 선언하고 초기화한다.
int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };

// 가변 배열을 선언한다.
int[][] jaggedArray = new int[6][];

// 가변 배열 구조에서 첫 번째 배열의 값을 설정한다.
jaggedArray[0] = [1, 2, 3, 4];



🧪 예제 코드

에제 1

string[] students = { "짱구", "철수", "맹구", "유리", "훈이" };

Console.WriteLine($"1번 학생 이름: {students[0]}");
Console.WriteLine($"2번 학생 이름: {students[1]}");
Console.WriteLine($"3번 학생 이름: {students[2]}");
Console.WriteLine($"4번 학생 이름: {students[3]}");
Console.WriteLine($"5번 학생 이름: {students[4]}");

1번 학생 이름: 짱구
2번 학생 이름: 철수
3번 학생 이름: 맹구
4번 학생 이름: 유리
5번 학생 이름: 훈이

이와 같이 0번지 부터 n - 1 만큼 번지를 지정해서 사용해주면 코드 아래와 같은 결과가 나온다.

에제 2

string[] students = { "짱구", "철수", "맹구", "유리", "훈이" };

for (int i = 0; i < students.Length; i++)
{
    Console.WriteLine($"{i + 1}번 학생 이름: {students[i]}");
}

1번 학생 이름: 짱구
2번 학생 이름: 철수
3번 학생 이름: 맹구
4번 학생 이름: 유리
5번 학생 이름: 훈이

이렇게 for 문을 활용하여 사용이 가능하고,

에제 3

string[] students = { "짱구", "철수", "맹구", "유리", "훈이" };

foreach (string name in students)
{
	Console.WriteLine($"학생 이름: {name}");
}

학생 이름: 짱구
학생 이름: 철수
학생 이름: 맹구
학생 이름: 유리
학생 이름: 훈이

이 처럼 foreach 문을 활용 할 수 있다.


그럼 이렇게 설명을 들어 알 수 있는 것들은

  • 지정한 자료형의 타입들만 넣을 수 있다.
  • 공간은 쭉 이어진 형태로 공간이 할당된다.
  • 배열의 첫번째 번지는 0이고 0을 포함한 크기 만큼 번지가 생긴다. (0 ~ n-1)
  • 배열에 접근하여 사용하고 싶다면, [] 를 사용하여 알맞은 범위의 번지를 입력하여 사용한다.
  • 배열은 정해진 자료형, 크기, 순서를 가지며, 값을 효율적으로 저장하고 접근할 수 있음

상세한 메모리 관련된건 나중에 한번에 다루겠다

profile
지모창말, 미모창.

0개의 댓글