어서 오세요
이번 강의에서는 배열 초기화에 관해 얘기할 거예요
배열을 어떻게 사용하고 어떻게 만드는지 알죠
네 하지만 구체적으로 특정 초기 값을 배열에 할당하려면 어떻게 하죠?
어떻게 하죠?
그러니 대부분의 경우 배열의 요소들에 대해 초기 값을
할당하는 게 좋죠
네 초기 값을 배열이나 심지어 변수에 할당하는
이유는 뭔가 잘못됐을 때 감지하기 쉽기 때문이에요
네 초기 데이터가 없는데 뭔가 하려고 하면 프로그램에 문제가
생길 수 있어요
초기화는 아주 좋은 거예요 항상 하고 싶죠
배열을 이용하면, 스매니 등 많은 요소들이 배열되어 있죠
그런 요소들을 초기화할 수 있는 특별한 방법이 있어요
다양한syntax를 사용할 수 있어요
초기화는 좋은 거예요 늘 하고 싶죠
어떻게 배열을 할 수 있는지 간단하게 얘기해 볼게요. 여러
가지 방법이 있거든요.
네 변수가 선언되면 초기 값을 할당할 수
있듯이 선언되면 배열의 요소에 초기
값을 할당할 수 있어요
배열의 값을 초기화하려면 리스트에 값을 제공하세요
목록은 쉼표로 나뉘어 있고 목록 전체가 중괄호 두
개로 둘러싸여 있죠
이렇게 생겼어요
카운터라는 이름을 가진 아나운서를 만들고 있어요
int 형식에 5개의 요소가 있어요
그런 다음 중괄호를 사용합니다 인덱스는
사용하지 않고요
쉼표로 구분된 게 보이실 거예요
이게 하는 일은 카운터 배열의 모든 5개 요소를 0으로 설정하고
있어요 각각의 요소는 0이죠
네 네 또 다른 배열이 있고 이 배열의 이름을 정수라고 짓고 역시 5
크기라면요 그리고 중괄호 안에 할당 연산자 0 다음에
쉼표가 있죠 1 쉼표 2 쉼표 3 쉼표 4 이게 뭘 하는 거냐면
네 네 정수로 첫 번째 요소를 배열하고 정수 배열을 0으로
두 번째 요소를 1로 세 번째 요소를 2로 네 번째 요소를 3으로 5번째 요소를
4로...
멋진 구문이죠, 여러분이 선언하면 즉시 배열을 초기화할
수 있어요 괄호 안에 쉼표로 구분된 숫자를 제공함으로써요
이렇게 하고 싶죠
어레이 전체를 완전히 해체할 필요도 없어요
앞의 2개의 섹션에서 5번 크기 배열의 5개
요소를 모두 초기화했어요
일부 가치만 구체화하고 싶다면 어떻게 할까요?
네
숫자와 배열 크기가 다른 초기 값을 제공할 경우 나머지 값은 0으로 설정하죠
네 그래서 이런 걸 할 경우 샘플 데이터 형식 흐름이라는
배열이 있는 경우 500개의 요소를 포함하죠
하지만 중괄호에서 여기 3개의 요소가 보이시죠
네 이렇게 하면 샘플 데이터 배열의 첫
3개의 값을 100으로 초기화하고 300 500 5살요
나머지 497제곱킬로미터는 0이 될 거예요
모든 걸 일일이 구분할 필요 없어요
지정 초기화라는 개념도 있어요
C99에 도입된 것 같아요
멋진 기능이죠, 초기화하고자 하는 요소를 선택하고 선택할
수 있어요
C99는 옵션으로 바꿨고 C11은 옵션으로 바꾼 것 같아요
컴파일러의 능력에 따라 그게 가능할 수도
아닐 수도 있죠
하지만 언급하고 싶은 건 그게 어느 정도 일반적이기 때문이에요
일부 컴파일러는 C99 이후로 이런 걸 허용하지 않아요
하지만 실제로 선택해서 연기할 수 있어서 좋아요
네 그래서 요소 번호를 한 쌍의 괄호에 넣을 수 있고 그런 다음 초기화될
수 있는 배열 요소를 명시할 수 있어요 어떤 순서로든
할 수 있죠
여기 예제가 있어요
샘플 데이터 배열이 있죠
형식 플로트예요
크기는 500이 될 거예요
하지만 중괄호 안에 추가 인덱스가 있어요
괄호를 2로 하고 괄호 2 sub-2는 500이죠 5, 서브 1은 300이죠
0 더하기 0은 100이죠 0개요
쉼표로 나뉘어 있어요
네 이게 하는 일은 아까 예제에서 했던 것과 같은 걸 지정하는
거죠 하지만 다른 순서로 하고 있어요
하지만 요소는 여전히 0이에요 첫 번째 요소는 100이고 두 번째
요소는 300이고 세 번째 앨범은 500이죠
5살요
하지만 중괄호에서 바로 시작하려면 와트 인덱스를
지정해야죠
또 다른 예는 AR이라는 창자인데 크기가 6이에요
네 그걸 선언하면 5번째 원소를 초기화해요
마지막 원소인 212로요 모든 원소가 0이 되죠
네 전통적인 초기화의 예가 있어요 그냥 배열의
이름을 선언하고 다양한 숫자를 공급하죠
네 이 예제에서는 배열을 선언하고 매달
모든 날을 저장할 거예요
네 그래서 이 배열을 통해 프린트할 때 아주
일반적인 거죠 일반적으로 반복문을 이용해 배열의 요소들을 프린트하거나
적어도 반복합니다
지금 하는 일은 매달 날짜와 날짜를
출력하는 거예요
출력을 보여드리기 위해 코드블록을 살펴보죠
여기 예제가 있어요
며칠, 몇 달 남았고 어레이를 초기화하고 있어요
첫 번째 요소는 331, 다음 28, 다음 31이에요
10번째 줄에서 상수를 만들기 위해 정의를 재사용하는 걸 보셨을 거예요
네 그리고 그건 그렇고 c에서는 상수 키워드도 쓸 수 있어요 나중에 얘기하겠지만요
다른 것들도요 상수를 만드는 또 다른 방법이죠
네 지금은 배열 초기화만 다루고
있어요 아주 쉽죠 중괄호 안에 쉼표로 분리돼 있어요
네 디스플레이 하려는 것은 어떤
배열을 통해서 인덱스 + 1을 보고 날짜 인덱스를 볼 것입니다
월 1haz라고 할 거예요 값에 따라 일수가 결정되겠죠
네 배열 이름으로 인덱스에 액세스하고 서브스크립트
값 인덱스 값 배열을 사용하죠
각 반복을 통해 바뀌는 변수죠
이걸 실행해보죠
네 네 첫 달의 출력은 31일이에요 2달의 28일은
1월 2월 3월 4월 배열을 거쳐
날짜를 출력하죠
이 실험이 성공적이라는 증거예요
데이터를 초기화해야 해요
이제 다시 한 번 초기화 요소의 반복에 대해
얘기해보죠
다른 예가 있어요 여기 다른 예가 있는데 이 예에서는 지정
이니셜라이저를 사용하죠
초기화하고자 하는 정확한 정렬을 지정할 거예요
네 여기서 주목해야 할 메인 라인은 초기화를
하고 있는 날짜와 달이에요
괄호 열고 보면 괄호 열고 보면
첫 번째 요소는 31 두 번째 요소는 28이죠 그런데 괄호 안에
4라고 나오는 게 있어요 값이 31이 나오죠
그리고 쉼표가 있어요 5번 요소는 30을 얻고 6번
요소는 31을 얻죠
이제 한 개 남았네요
네 그 말은 28을 덮어쓰기 하고 29를 넣는다는
거죠 29라고 적어요
여기서 중복되는 거죠
네 네 꼭 할 필요는 없지만 sub-1은 제거할
수 있습니다. 31과 28은 이미 할당되어 있으니까요.
하지만 그 값이 29일 수도 있어요
이건 그냥 designated initializers를 사용하는 거예요.
같은 가격의 투우사를 원한다면요?
C#에선 0을 지정하면 같은 값의 전체 배열을
언제나 지정할 수 있어요
언제든 초기화할 수 있어요 null 매개 변수 같은 거죠
네 하지만 그 외에는 C#은 배열 초기화 메커니즘을
제공하지 않아요 적어도 C89에서는요
네 네 C11에서도 보실 수 있죠 여기서도 괄호를 이용해 동일한 값을 전체 배열에
초기화할 수 있어요 하위 스크립트 없이 숫자만으로요
하지만 현재 C89와 C99에선 반복 수를 지정할 방법이 없어요
가령, 이 광선의 모든 요소가 55라고 말할 순 없어요
그렇죠 그래서 원하는 경우 처음에 샘플 데이터의 500개
값을 모두 1로 설정하고 500개 값을 모두 명시적으로 할당해야 하는데 그게
아주 골치 아프죠
그래서 결국 고리 안에 넣어야 해요
배열을 반복하는 가장 쉬운 방법은 루프를 이용하는 거죠
모든 요소들을 같은 값으로 초기화할 수 있는 방법에 대한 간단한
예제가 있네요.
하지만 이 경우엔 첫 번째 원소를 0-1-4-9와
16으로 초기화했어요
이건 값에 남은 요소들을 초기화하는 거예요
인덱스 5부터 9까지를 사용한 10번째 요소의 6번째 요소죠
그게 for 루프가 하는 일이죠
네 네 첫 번째 반복문은 요소들을 5부터 9까지
I 곱하기입니다 나
두 번째 forloop은 들여쓰기가
돼 있어요 읽기가 더 어렵죠
네 두 번째 반복문은 전체 배열을 통해
데이터를 보여줌으로써 마지막 5개의 값이 초기화됐다는
걸 보여줍니다
네 그래서 같은 값을 반복하거나 다른 값으로 초기화하고
싶을 때 루프를 사용하세요
초기화는 중요해요
네 초기화할 겁니다 그러니 이 구문은 아주 익숙해야
해요 C에서 배열을 많이 쓸 테니까요