챌린지 | 혼자 공부하는 C언어 |
---|---|
진도 | Chapter 08 |
기본미션 | 배열의 개념 정리하고 공유하기 |
선택미션 | 널 문자의 정의, 용도와 표기법 공유하기 |
배열도 변수와 마찬가지로 최초 할당된 저장 공간에는 쓰레기 값이 저장되어 있다. 따라서, 배열도 원하는 값을 가지기 위해서는 선언과 동시에 초기화가 필요하다. 초기화는 중괄호({})를 사용한다.
1) 기본적인 초기화 방법 (초깃값은 첫번째 요소부터 차례로 초기화된다.)
int ary1[5] = {1, 2, 3, 4, 5};2) 초깃값 < 배열 요소의 개수 (이때는 왼쪽부터 차례로 초기화하고 남은 배열 요소는 모두 0으로 채운다.)
int ary2[5] = {1, 2, 3};3) 자동 초기화 기능을 사용하면 배열 요소 개수가 아무리 많아도 모든 요소를 쉽게 0으로 초기화할 수 있다.
int ary[1000] = {0};4) 배열 요소 개수가 생략됨 (컴파일러는 초깃값 개수만큼 배열 요소 개수를 정하고 저장 공간을 할당함. 즉, ary3은 메모리에 저장 공간이 할당되고 초기화됨)
int ary3 [ ] = {1, 2, 3};5) double형 배열과 char형 배열을 선언하고 초기화함. double형 배열: 실수, char형 배열: 문자.
double ary4[5] = {1.0, 2.1, 3.2, 4.3, 5.4};
char ary5[5] = {'a', 'p', 'p', 'l', 'e'};
배열은 연속된 저장 공간을 할당하고 초기화할 수 있어 같은 유형의 변수가 많이 필요할 때 사용한다. 이렇게 연속된 배열 요소에 반복문을 사용하여 모든 배열 요소에 값을 입력할 수 있다.
for (i = 0; i < 5; i++)
{
scanf("%d", &score[i]);
}
sizeof 연산자: 변수가 메모리에 할당된 크기를 바이트 단위로 반환하는 함수. 배열 요소의 개수는 다음과 같이 구한다.
sizeof(배열명) / sizeof(배열 요소)
char형 배열을 선언할 때에는 정장할 문자열의 길이보다 최소한 하나 이상 크게 배열을 선언하는 것이다. 여분의 공간이 필요한 이유? 널 문자(/0)를 저장하기 위해서!
문자 상수로 하나씩 초기화
char str[80] = {'a', 'p', 'p', 'l', 'e', 'j', 'a', 'm'};
문자열 상수로 한 번에 초기화
char str[80] = "applejam";
char형 배열이 문자열을 저장하는 변수의 역할을 하므로 초기화된 이후에도 얼마든지 새로운 문자열을 저장할 수 있다. 문자열의 길이가 다를 수 있으므로 일반 변수처럼 대입 연산자를 사용하는 것을 불가능하다. -> strcpy 함수 사용
strcpy(저장될 배열명, 저장할 문자열)
char형 배열에 저장된 0을 특별히 '널 문자(null character)'라고 부른다. 모든 문자는 아스키 코드 값으로 저장되므로 결국 널 문자는 아스키 코드 값이 0인 문자를 말하며 문자 상수로는 /0으로 표현된다.
널 문자는 문자열의 끝을 표시한다.