본문 바로가기
C#/[루키스] 자료구조

[C# 섹션 5] 배열

by 묻공러 2025. 6. 22.

# 배열

- 배열

Lvalue를 선언할 때 '[]' 위치가

C++과는 좀 다르기에 헷갈리지 않아야 한다

초기화 방식은 다양하게 지원하는 것을 알 수 있다

// C++ 
int arr[5]; 
int* arr = new int[5];

// C# 
int[] arr = new int[5];

int[] arr2 = new int[5] { 10, 20, 30, 40, 50 };

int[] arr2 = new int[] { 10, 20, 30, 40, 50 };

int[] arr2 = { 10, 20, 30, 40, 50 };

 

- C# 배열은 동적할당

C++ 배열은

정적할당도 가능하고, new 키워드를 통해 동적할당도 가능하다

 

반면, C# 배열은

참조타입으로 동적할당을 한다는 점이 중요하다

 

- arr.Length

C++에서 sizeof()를 통해서 배열의 개수를 확인한다

int arr[] = {1, 2, 3, 4, 5};
int length = sizeof(arr) / sizeof(arr[0]); // 전체 크기 / 요소 크기
std::cout << "배열 길이: " << length << std::endl;

 

참고로 C++ vector의 경우는 .size()를 통해 동적배열의 개수를 확인한다

std::vector<int> arr = {1, 2, 3, 4, 5};
std::cout << "배열 길이: " << arr.size() << std::endl;

 

반면, C#에서는 arr.Length를 통해 배열의 개수를 확인한다

int[] scores = new int[5] { 10, 20 , 30, 40, 50 };

for (int i = 0; i < scores.Length; i++)
{
	Console.WriteLine(scores[i]);
}

 

- foreach

C#의 foreach는 C++에서 범위기반 for문과 유사하다

// C#
foreach (int i in scores) 
{
    Console.WriteLine(i);
}

// C++
for (int i : scores) 
{
    std::cout << i << std::endl;
}

 

둘의 차이는 아래와 같고

쉽게 설명해 C++에서 const&를 붙였다고 생각하면 된다

  C# foreach C++ 범위 기반 for
순회 방식  IEnumerator begin() / end() 반복자
변경 가능 여부 읽기전용 복사, 참조(&) 모두 가능
사용 대상 배열, 리스트, 컬렉션 (IEnumerable<T>) vector, array, set 등 stl 컨테이너

 

- C# foreach vs C++ foreach

C#의 foreach는 C++의 foreach와는 완전히 다른 기능이다

헷갈릴 수 있는 부분이다

 

C++의 foreach와 C#의 foreach의 차이는 아래와 같다

  C++ std::for_each  C# foreach
역할 범위 내 모든 요소에 함수 객체 적용 컬렉션 요소를 순회하며 처리
사용 방식 std::for_each(start, end, 함수객체) foreach (var item in collection) {...}
함수형 프로그래밍 함수 객체 사용 (lambda, functor) 일반적인 루프 구조
상태 변경 가능 여부 요소 수정 가능 (& 활용) 요소 자체 변경 불가

 

추가적으로 C++ foreach의 사용법은 아래와 같다

#include <iostream>
#include <vector>
#include <algorithm>

int main() 
{
    std::vector<int> numbers = {1, 2, 3, 4, 5};

    // 모든 요소를 출력하는 Lambda 함수 활용
    std::for_each(numbers.begin(), numbers.end(), [](int num) 
    {
        std::cout << num << " ";
    });

    return 0;
}

 

- 다차원 배열

int [ , ] arr = new int [2, 3];

다차원 배열을 선언하는 문법은 위와 같다

[] 안에 순서를 읽는 방법은 C++과 동일하며

오른쪽에서 왼쪽으로 읽으면 된다

ex. 3개의 배열이 총 2개로 구성되어 있다

 

다차원 배열 시, Length와 GetLength의 차이를 알아야 한다

Length는 다차원 배열의 총 전체 길이를 의미하고

GetLength(N)는 N차원의 배열의 길이를 의미한다

int [ , ] arr = new int [2, 3];
int L = arr.Length; // 6
int GL = GetLength(0); // 2

 

GetLength(N)의 경우는 아래와 같은 규칙을 따른다

int [ , ] arr = new int [2, 3];
int GL0 = GetLength(0); // 2
int GL1 = GetLength(1); // 3

 

 

'C# > [루키스] 자료구조' 카테고리의 다른 글

[C# 섹션 5] Dictionary  (0) 2025.06.23
[C# 섹션 5] List  (2) 2025.06.23