티스토리 뷰
일차원 배열
- 같은 데이터형 + 변수명 + 순차적인 메모리 나열
- 참조형 : new를 통해 생성
- Array로부터 파생된 참조형
- 기본 형태
데이터형[ ] 배열명;
ex) int[ ] array_name;
#배열명은 참조형이기 때문에 데이터형뒤에 [ ]를 붙힘
- Array.Length 속성
- foreach 사용 가능 (읽기 전용)
namespace _0614
{
class Program
{
static void Main(string[] args)
{
int[] array = { 1, 2, 3, 4 };
//int[] array = new int[] { 1, 2, 3, 4 };
for (int i = 0; i < 4; i++)
Console.Write("{0} ", array[i]);
Console.Write('\n');
for(int i = 0; i < array.Length; i++)
Console.Write("{0} ", array[i]);
Console.Write('\n');
foreach (int m in array)
Console.Write("{0} ", m);
Console.Write('\n');
string[] days = {"Sun", "Mon", "Tue", "Wed" , "Thu" , "Fri" , "Sat" };
foreach (string str in days)
Console.Write(str + " ");
}
}
}
이차원 배열 및 다차원 배열
- 일차원 배열을 행과 열의 개념으로 나눔
#행이 먼저
- 면은 ,로 구분 (다차원)
- 기본 형태
데이터형[,] 배열명;
데이터형[,,] 배열명;
namespace _0614
{
class Program
{
static void Main(string[] args)
{
int[,] array = new int[2, 2];
array[0, 0] = 1;
array[0, 1] = 2;
array[1, 0] = 3;
array[1, 1] = 4;
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
Console.Write(array[i, j] + " ");
Console.Write('\n');
int[,] array2 = { { 1, 2 }, { 3, 4 } };
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
Console.Write(array2[i, j] + " ");
Console.Write('\n');
string[,,] array3 = { { { "ab", "cd" }, { "ef", "gh" } },{ { "ij", "kl" }, { "mn", "op" } } };
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
for (int k = 0; k < 2; k++)
Console.Write(array3[i, j, k] + " ");
}
}
}
가변 배열
- 행과 열에 대한 크기를 미리 정해놓지 않음
- , 를 쓰지 않음
namespace _0614
{
class Program
{
static void Main(string[] args)
{
int[][] array = new int[2][];
array[0] = new int[3] { 1, 2, 3 }; //[3]은 생략 가능
array[1] = new int[2] { 4, 5 };
for (int i = 0; i < array.Length; i++)
for (int j = 0; j < array[i].Length; j++)
Console.Write(array[i][j]);
}
}
}
namespace _0614
{
class Program
{
static void Main(string[] args)
{
int[][][] array = new int[2][][]; //[2]는 면에 대한 생성
array[0] = new int[2][]; //면에 2개의 행이 있음
array[1] = new int[3][]; //면에 3개의 행이 있음
array[0][0] = new int[3] { 1, 2, 3 };
array[0][1] = new int[2] { 4, 5 };
array[1][0] = new int[3] { 6, 7, 8 };
array[1][1] = new int[2] { 9, 10 };
array[1][2] = new int[2] { 11, 12 };
for (int i = 0; i < array.Length; i++)
for (int j = 0; j < array[i].Length; j++)
for (int k = 0; k < array[i][j].Length; k++)
Console.Write("{0} ", array[i][j][k]);
}
}
}
일차원 배열을 함수로 전달
namespace _0614
{
class Program
{
static void TransArray(string[] arr)
{
string[] days = { "일", "월", "화", "수", "목", "금", "토" };
for (int i = 0; i < arr.Length; i++)
arr[i] = days[i];
}
static void Main(string[] args)
{
string[] days_e = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
TransArray(days_e);
foreach (string str in days_e)
Console.Write(str);
}
}
}
이차원 배열을 함수로 전달
- 형식 참고
namespace _0614
{
class Program
{
void setArray(int[,] arr)
{
}
static void Main(string[] args)
{
int[,] array = { { 1, 2, 3 }, { 4, 5, 6 } };
setArray(array);
}
}
}
배열을 리턴하는 함수
- 배열이 참주하는 객체의 주소값을 리턴
namespace _0614
{
class Program
{
static int[] CreateArray1(int size)
{
int[] array1 = new int[size];
for (int i = 0; i > array1.Length; i++)
array1[i] = i;
return array1;
}
static int[,] CreateArray2(int row, int col)
{
int index = 0;
int[,] array2 = new int[row, col];
for (int i = 0; i < row; i++)
for (int j = 0; j < col; j++)
array2[i, j] = index++;
return array2;
}
static void Main(string[] args)
{
//참조 배열 변수
int[] array1;
int[,] array2;
array1 = CreateArray1(5);
array2 = CreateArray2(2, 3);
for (int i = 0; i < array1.Length; i++)
Console.Write(array1[i]);
Console.WriteLine();
//00000
for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; j++)
Console.Write(array2[i, j]);
Console.WriteLine();
//012345
}
}
}
배열의 메소드
- 배열 : Array 클래스로부터 파생된 객체
- 배열의 초기화 메소드
public static void Clear (Array array, int index, int length)
- 배열의 개수만큼 초기화
namespace _0614
{
class Program
{
static void Main(string[] args)
{
int[] array1 = { 1, 2, 3, 4, 5 };
Array.Clear(array1, 2, 3); //array1에서 2번째부터 3개를 초기화
foreach (int m in array1)
Console.Write(m);
Console.WriteLine();
//12000
Array.Clear(array1, 0, array1.Length);
foreach (int m in array1)
Console.Write(m);
Console.WriteLine();
//00000
}
}
}
배열 복사 메소드
- 기본 형태
public Object Clone( )
namespace _0614
{
class Program
{
static void Main(string[] args)
{
int[] array1 = { 1, 2, 3, 4 };
int[] CloneArray = (int[])array1.Clone(); //Clone의 리턴타입은 object이기 때문에 int를 캐스팅
//array1과 CloneArray가 다른 메모리를 쓰고있는지 확인
CloneArray[2] = 30;
foreach (int m in array1)
Console.Write(m);
Console.WriteLine();
//1234
foreach (int m in CloneArray)
Console.Write(m);
Console.WriteLine();
//12304
string[] Days = { "일", "월", "화", "수", "목", "금", "토" };
string[] DaysClone = (string[])Days.Clone();
foreach (string str in DaysClone)
Console.Write(str);
Console.WriteLine();
//일월화수목금토
}
}
}
'LANGUAGE > C#' 카테고리의 다른 글
[C#] 파일 입출력 (0) | 2018.06.14 |
---|---|
[C#] 기본 문법 (0) | 2018.06.13 |
[C#] 값 형식 / 참조 형식 (0) | 2018.06.12 |
[C#] 사용자 지정형 (0) | 2018.06.12 |
[C#] 표준 입력 (0) | 2018.06.12 |
댓글