03 배열

vencott·2021년 6월 2일
0

C#

목록 보기
3/32

배열

일련의 동일한 데이터 타입 요소들로 구성된 데이터 집합

인덱스를 통해 Element에 엑세스

다차원 배열

C# 배열은 최대 32차까지 다차원 배열을 가질 수 있다

  1. Rectangular 배열: 각 차원의 배열 크기가 고정된 다차원 배열
    • C의 [ , ]와 같이 괄호안에 콤마로 분리
  2. Jagged 배열: 각 차원의 배열 크기가 가변적인 다차원 배열
    • Java의 [ ][ ]와 같이 각 차원마다 괄호를 별도로 사용
    • 첫번째 차원의 크기는 컴파일 타임에 확정되어야 하고, 그 이상 차원은 런타임시 동적으로 크기 지정 가능
    • Rectangular 배열의 고정된 크기로 인해 메모리 낭비가 심할 경우 유용
// 1차 배열
string[] players = new string[10];
string[] Regions = { "서울", "경기", "부산" };

// 2차 배열: Rectangular Array(가변 배열)
string[,] Depts = {{"김과장", "경리부"},{"이과장", "총무부"}};

// Jagged Array (가변 배열)
// 1차 배열 크기(3)는 명시(컴파일 시 결정)
int[][] A = new int[3][];

// 각 1차 배열 요소당 서로 다른 크기의 배열 할당 가능(런타임 시 결정)
A[0] = new int[2];
A[1] = new int[3] { 1, 2, 3 };
A[2] = new int[4] { 1, 2, 3, 4 };

A[0][0] = 1;
A[0][1] = 2;

배열의 사용

모든 C# 배열은 내부적으로 .NET Framework의 System.Array에서 파생된 것으로 System.Array의 메서드, 프로퍼티를 사용할 수 있다

static void Main(string[] args)
{
    int sum = 0;
    int[] scores = { 80, 78, 60, 90, 100 };
    for (int i = 0; i < scores.Length; i++)
    {
        sum += scores[i];
    }
    Console.WriteLine(sum);        
}

배열의 전달

배열은 레퍼런스(Reference) 타입

모든 배열 데이터를 복제하지 않고, 배열 전체를 가리키는 참조값(Reference pointer)만을 전달한다

static void Main(string[] args)
{            
    int[] scores = { 80, 78, 60, 90, 100 };
    int sum = CalculateSum(scores); // 배열 전달: 배열명 사용
    Console.WriteLine(sum);        
}

static int CalculateSum(int[] scoresArray) // 배열 받는 쪽
{
    int sum = 0;
    for (int i = 0; i < scoresArray.Length; i++)
    {
        sum += scoresArray[i];
    }
    return sum;
}

출처: http://www.csharpstudy.com/

profile
Backend Developer

0개의 댓글