산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C# 배열 마스터하기: 효율적 데이터 저장과 접근

배열(Array)은 같은 타입의 요소를 고정된 크기로 순차적으로 저장하는 컬렉션입니다. 배열은 데이터를 저장하는 용도뿐 아니라, 동일한 타입의 변수들이 연속된 메모리 위치에 저장된 집합으로 생각하는 것이 더 유용합니다.

개별 변수(number0, number1, ..., number99)를 선언하는 대신, 하나의 배열 변수(numbers)를 선언하고 numbers[0], numbers[1], ..., numbers[99]로 개별 요소에 접근합니다. 특정 요소는 인덱스(Index)로 접근합니다.

모든 배열은 연속된 메모리 위치로 구성됩니다. 가장 낮은 주소가 첫 번째 요소, 가장 높은 주소가 마지막 요소에 해당합니다.

배열 선언 (Declaration)

데이터타입[] 배열이름;
double[] balance;

배열 초기화 (Initialization)

선언만으로는 메모리에 배열이 생성되지 않습니다. new 키워드로 인스턴스를 생성해야 합니다 (배열은 참조 타입).

double[] balance = new double[10];  // 크기 10인 double 배열 생성

배열에 값 할당

인덱스로 개별 할당

double[] balance = new double[10];
balance[0] = 4500.0;

선언과 동시에 초기화

double[] balance = { 2340.0, 4523.69, 3421.0 };

크기 지정하여 생성과 초기화 동시

int[] marks = new int[5] { 99, 98, 92, 97, 95 };

크기 생략 (자동 추론)

int[] marks = new int[] { 99, 98, 92, 97, 95 };

배열 복사 (참조 복사 주의!)

int[] marks = new int[] { 99, 98, 92, 97, 95 };
int[] score = marks;  // 같은 메모리 위치를 참조 (얕은 복사)
주의: 배열 변수 간 대입은 참조 복사입니다. 실제 값 복사가 필요하면 Array.Copy()나 Clone()을 사용하세요.

배열 생성 시 C# 컴파일러는 타입별 기본값으로 암시적 초기화합니다 (int 배열 → 0, bool 배열 → false, 참조 타입 → null).

배열 요소 접근

double salary = balance[9];  // 10번째 요소 접근 (0-based index)

종합 예제: 선언, 할당, 접근

using System;
namespace ArrayApplication
{
    class MyArray
    {
        static void Main(string[] args)
        {
            int[] n = new int[10];
            int i, j;
            
            // 배열 요소 초기화
            for (i = 0; i < 10; i++)
            {
                n[i] = i + 100;
            }
            
            // 각 요소 값 출력
            for (j = 0; j < 10; j++)
            {
                Console.WriteLine("Element[{0}] = {1}", j, n[j]);
            }
            Console.ReadKey();
        }
    }
}

출력: Element[0] = 100 ~ Element[9] = 109

foreach 루프로 배열 순회

for 루프 대신 foreach 문을 사용하면 인덱스 관리 없이 간편하게 순회할 수 있습니다.

foreach (int j in n)
{
    int i = j - 100;
    Console.WriteLine("Element[{0}] = {1}", i, j);
}

C# 배열 관련 중요 개념

번호개념 및 설명
1다차원 배열 (Multi-dimensional Arrays)
C#은 다차원 배열을 지원. 가장 간단한 형태는 2차원 배열.
2가변 배열 (Jagged Arrays)
배열의 배열. 각 행의 크기가 다를 수 있음.
3함수에 배열 전달
인덱스 없이 배열 이름만 지정하여 배열에 대한 포인터(참조) 전달.
4가변 길이 매개변수 (Params Arrays)
params 키워드로 알 수 없는 개수의 매개변수 전달 가능.
5Array 클래스
System 네임스페이스에 정의. 모든 배열의 기본 클래스. 배열 작업을 위한 다양한 속성/메서드 제공.

다차원 배열 예제

// 2차원 배열 (3행 4열)
int[,] matrix = new int[3, 4] 
{
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

// 접근
int val = matrix[1, 2];  // 7

가변 배열 예제

// 가변 배열 (행마다 다른 크기)
int[][] jagged = new int[3][];
jagged[0] = new int[] { 1, 2 };
jagged[1] = new int[] { 3, 4, 5, 6 };
jagged[2] = new int[] { 7 };

// 접근
int val = jagged[1][2];  // 5

params 키워드 예제

public int Sum(params int[] numbers)
{
    int total = 0;
    foreach (int n in numbers) total += n;
    return total;
}

// 호출
Sum(1, 2, 3);        // 6
Sum(1, 2, 3, 4, 5);  // 15
int[] arr = {10, 20};
Sum(arr);            // 30

C 언어

  1. C# 배열 마스터하기: 선언, 초기화, 조작과 LINQ 연산
  2. C# 가변 배열(Jagged Array): 선언, 초기화, 접근 완전 가이드
  3. C++ 배열을 함수에 전달하는 방법: 실전 가이드
  4. C 언어에서 1차원 및 2차원 배열을 함수에 전달하는 방법 – 실전 가이드
  5. C 언어에서 배열과 포인터의 관계 이해하기
  6. Java 배열 복사 기법: 대입, 루프, System.arraycopy, Arrays.copyOfRange 총정리
  7. C++ 배열 완전 정복: 선언, 초기화, 포인터 기법
  8. C++ 동적 배열 할당 완벽 가이드: new, delete, 실전 코드 예제
  9. Java 배열 튜토리얼: 선언, 생성, 초기화와 예제 코드
  10. MATLAB: 다차원 배열과 특수 배열 마스터하기