C# 배열 정리

김찬수·2023년 1월 23일
0

배열

개요

  • 프로그래밍을 하다보면 비슷한 성질을 가지는 데이터를 여러 개 다뤄야 할 때가 있음

  • 한 반에 30명인 학생의 점수를 가지고 순위를 매긴다고 했을 때, 30개의 객체를 만드는 것은 비효율적

  • 만약 학생 수가 30명이 아니라 100명, 1000명이라면 읽기도, 작성하기도 힘듦

  • 배열(Array)은 같은 타입으로 된 여러개의 객체를 한 번에 다루고자 할 때 사용

  • 위의 예시를 배열로 바꾼 것인데 이전부터 데이터를 다루기가 한결 편해짐을 확인할 수 있음

문법

  • 배열 타입의 객체를 생성할 때는 new 연산자 사용

  • new 연산자 쓰이는 곳은 메모리 주소가 저장되는 것 (데이터가 직접적으로 저장되지 않음)

  • ㄴ Heap 영역의 어딘가에 데이터가 저장되고, 그 데이터의 주소를 가리키는 데이터가 객체(Stack 영역)에 저장되어 있음

  • 위의 예시에서 arr은 int 타입의 객체 30개를 다룰 수 있는데, 객체 하나를 원소(Element)라고 함

  • 위의 두 가지 방법이 배열 타입의 초기화 방법이고 편한 방식을 사용하면 됨
  • 배열의 원소는 메모리에 연속적으로 배치
  • 각 원소에 접근하려면 인덱서를 사용

인덱스를 0부터 시작하는 이유

  • 메모리를 사용하기 위해서는 주소가 필요
  • 배열의 각 원소에 접근하기 위해서도 주소가 필요
  • 원소는 메모리에 연속적으로 할당되어 있고, 각 원소의 데이터 크기는 알고 있기 때문에 첫번째 원소의 주소만 알고 있다면 원하는 원소의 주소를 계산할 수 있음

다차원 배열

  • 배열을 사용할 때 메모리를 논리적으로 구분하여 사용할 수 있음
  • 한 반에 30명의 학생이 있고, 10반까지 있다면 int[] arr =new int[300]; 이라고 표현할 수 있음
    3반의 3번째 학생은 arr[2*30 +2]로 표현할 수 있음
  • 이를 더 직관적으로 표현할 수 있는게 다차원 배열
  • 한 반에 30명의 학생이 있고, 10반까지 있다면 다차원 배열에서는 int[,] arr = new int[10, 30]; 이라고 표현할 수 있음
  • 3반의 3번째 학생은 arr[2, 2]로 표현할 수 있음
  • 4차원 이상으로는 잘 사용하지 않음 써봤자 3차원 정도까지 사용

가변 배열

  • 다차원 배열과는 다르게 각 원소들이 전부 배열 타입인 배열
  • 데이터가 연속적으로 저장되어 있지 않아서, 주소연산으로 원하는 데이터로 접근할 수 없음 (각각에 대해서 따로따로 주소연산은 가능)
profile
프로그래머 지망생

0개의 댓글

관련 채용 정보