Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- #csharp #배열 #다차원배열 #가변배열 #배열초기화 #indexrange #span #배열비교 #csharp기초 #배열세미나
- #csharp #bool #boolean #논리연산자 #부울연산자 #단락평가 #조건문 #csharp기초 #삼항연산자 #csharp세미나
- #csharp #부동소수점 #반올림오차 #실수계산 #float #double #decimal #mathround #정확도비교 #csharp세미나
- #csharp #조건연산자 #삼항연산자 #논리연산자 #단락평가 #ifelse축약 #조건문 #프로그래밍기초 #csharp세미나
- 테더
- USDT
- #csharp #double #decimal #실수형 #정밀도 #부동소수점 #고정소수점 #금융계산 #과학계산 #csharp세미나 #닷넷기초
- #csharp #기본값 #definiteassignment #default키워드 #초기화규칙 #구조체초기화 #null값 #csharp세미나
- #csharp #부동소수점 #nan #infinity #특수값 #ieee754 #수치계산 #double #float #decimal #csharp세미나
- 빛썸
- #csharp #수치형식 #numerictypes #리터럴 #형식추론 #접미사 #decimal #float #double #프로그래미링기조 #그래피포뷰
- #csharp #관계연산자 #상등연산자 #equals #비교연산 #null비교 #float비교 #csharp기초 #csharp세미나 #문자열비교
- #csharp #수치변환 #형식변환 #자동변환 #명시변환 #convert #parse #tryparse #csharp세미나
- #csharp #비트연산자 #bitwiseoperators #flagsenum #masking #시프트연산 #비트연산 #성능최적화 #csharp세미나 #하드웨어제어
- 파이썬
- #csharp #산술오버플로우 #checked #unchecked #overflowexception #정수연산 #오버플로우처리 #csharp세미나 #디버깅 #성능최적화
- #csharp #표현식 #배정표현식 #void표현식 #연산자 #산술연산자 #조건연산자 #표현식기초 #csharp세미나
- #csharp #널연산자 #nulloperator #널조건부연산자 #널접합연산자 #nullcheck #csharp세미나 #nullsafe #코드안정성
- #csharp #스택과힙 #메모리구조 #값형식 #참조형식 #박싱 #가비지컬렉션 #힙메모리 #메서드스택 #csharp세미나
- #csharp #산술연산자 #arithmeticoperators #기초프로그래밍 #csharp기초 #연산자우선순위 #정수연산 #실수연산 #math클래스 #나눗셈예외 #csharp세미나 #닷넷개발 #프로그래밍입문
- #csharp #문자열 #문자 #string #char #문자열보간 #문자열연결 #문자열비교 #형식지정자 #문자변환 #csharp세미나
- #csharp #매개변수 #ref #out #params #명명된인수 #선택적매개변수 #메서드전달 #csharp세미나
- #csharp #var키워드 #타입추론 #암묵적형식지정 #익명형식 #linq #지역변수 #csharp세미나
- 자동매매
- c#bool
- 빗썸api
- c#string
- 무노동수입
- c#
- #csharp #연산자우선순위 #결합성 #operatorprecedence #연산자결합 #오른쪽결합 #왼쪽결합 #csharp세미나
Archives
- Today
- Total
맛있는 개발노트 (맛과 개발을 함께)
C# 세미나 자료: 배열 (Array) 본문
1. 개요
배열은 동일한 형식의 데이터 요소를 연속적으로 저장하는 자료 구조로, C#에서 매우 자주 사용됩니다. 배열을 통해 고정된 크기의 데이터를 효율적으로 다룰 수 있으며, 다차원 배열, 가변 배열, 참조형/값형식 배열 등 다양한 형태로 확장할 수 있습니다.
이 세미나에서는 배열의 기본 개념부터 고급 표현식과 내부 동작까지 단계적으로 설명합니다.
2. 기본 이론
2.1 배열 선언과 기본 초기화
int[] numbers = new int[5];
- int[5]는 크기가 5인 정수 배열을 생성
- 배열의 모든 요소는 기본값으로 초기화됨
- int → 0, bool → false, string/class → null
2.2 배열 초기화 표현식
string[] names = { "Alice", "Bob", "Charlie" };
int[] scores = new[] { 90, 80, 70 };
- 배열 크기를 지정하지 않고 초기값을 나열 가능
- new 생략 가능 (var 또는 명시적 형식 사용 시)
3. 값 형식 vs 참조 형식 배열
int[] a = new int[3]; // 값 형식 (int)
string[] b = new string[3]; // 참조 형식 (string)
- 값 형식 배열: 요소 자체를 저장
- 참조 형식 배열: 각 요소는 null로 초기화되고, 실제 객체는 별도 생성 필요
b[0] = "Hello";
b[1] = "World";
4. 다차원 배열과 사각형 배열
4.1 다차원 배열 (Rectangular Arrays)
int[,] matrix = new int[2, 3];
matrix[0, 1] = 42;
- 2행 3열의 고정형 2차원 배열
- 내부는 하나의 블록 메모리로 구성됨
4.2 가변 배열 (Jagged Arrays)
int[][] jagged = new int[2][];
jagged[0] = new int[] { 1, 2 };
jagged[1] = new int[] { 3, 4, 5 };
- 배열 안에 배열을 담는 구조
- 각 행마다 다른 길이의 배열 사용 가능
5. 색인과 범위 점검
5.1 색인(Index) 기초
int[] arr = { 10, 20, 30 };
Console.WriteLine(arr[1]); // 20
5.2 범위 오류
Console.WriteLine(arr[3]); // IndexOutOfRangeException
- 배열의 인덱스는 항상 0부터 시작
- 경계를 벗어나면 런타임 예외 발생
5.3 반복문과 배열 길이
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine(arr[i]);
}
6. 고급: Span, Index, Range (C# 8+)
int[] nums = { 1, 2, 3, 4, 5 };
Index idx = ^1; // 끝에서 첫 번째 요소
Console.WriteLine(nums[idx]); // 5
Range r = 1..4;
int[] slice = nums[r]; // {2, 3, 4}
- ^1: 끝에서 첫 번째 요소
- 1..4: 인덱스 1부터 3까지 슬라이싱
7. 결론
- 배열은 정형화된 데이터 관리에 가장 효율적인 구조 중 하나
- 값 형식과 참조 형식의 초기화 차이를 이해하고 사용할 것
- 다차원 배열과 가변 배열은 상황에 맞게 선택
- 인덱스 사용 시 반드시 범위 점검 수행 → 예외 방지
- C# 8 이후에는 Span, Index, Range를 활용한 고급 배열 조작이 가능
8. Q&A
Q1. 배열 요소는 어떤 값으로 초기화되나요?
A1. 값 형식은 기본값(0, false 등), 참조 형식은 null로 자동 초기화됩니다.
Q2. 다차원 배열과 가변 배열의 차이는 뭔가요?
A2. 다차원 배열은 메모리가 연속적이고 고정 크기이며, 가변 배열은 배열의 배열로 행마다 크기가 다를 수 있습니다.
Q3. 배열 인덱스를 잘못 쓰면 어떤 일이 발생하나요?
A3. IndexOutOfRangeException 예외가 발생합니다.
Q4. 배열 크기를 동적으로 바꿀 수 있나요?
A4. 배열은 크기 고정입니다. 동적으로 변경하려면 List<T>와 같은 컬렉션을 사용해야 합니다
'C# 학습 > C# 언어의 기초' 카테고리의 다른 글
C# 세미나 자료: 스택과 힙 (Stack & Heap) (0) | 2025.04.08 |
---|---|
C# 세미나 자료: 매개변수 (Parameters) (0) | 2025.04.08 |
C# 세미나 자료: 문자열과 문자 (String & Char) (0) | 2025.04.08 |
C# 세미나 자료: 조건 논리 연산자와 조건 연산자 (삼항 연산자) (0) | 2025.04.08 |
C# 세미나 자료: 상등 및 관계 연산자 (Equality & Relational Operators) (0) | 2025.04.08 |