배열의 선언
배열은 같은 형태의 많은 데이터를 반복으로 처리하기 위해 메모리에 연속적으로 저장한 후 쪼개서 사용하기 위해 쓰인다. 배열은 자료형을 먼저 정하고 배열 이름을 작성한 다음 필요한 요소를 작성해주면 된다.(ex : int arr[5]) 예에 작성된 int형 arr 변수의 메모리 크기는 20바이트 이다.
배열을 선언할 때의 []와 배열을 사용할 때 []는 다르다. 선언할 때 사용하는 []는 요소 개수를 표시하는 것이고, 사용할 때는 각 요소가 배열에서 몇 번째에 있는지를 의미한다.
배열 초기화
배열도 변수와 마찬가지로 최초 할당된 저장 공간에 쓰레기 값이 있다. 그렇기 때문에 원하는 값을 가지려면 선언과 동시에 초기화를 해야한다. 다른 언어와는 다르게 C언어의 배열은 중괄호({})를 사용한다. (ex: int arr[5] = {1, 2, 3, 4, 5};)
예제에 선언한 배열처럼 선언 요소 개수와 초기화한 요소 개수가 맞으면 그대로 저장 되지만, 초기화 한 배열 값이 요소 개수 보다 적게 하면 나머지 값은 모두 0으로 채워진다. 배열의 초기화는 선언시 최초 한 번만 가능하고, 그 이후에 배열 값을 변경하고 싶으면 요소 하나씩 값을 바꿔야 한다.
char형 배열의 선언과 초기화
char형 배열은 선언할 때는 반드시 저장할 문자열의 길이보다 최소한 하나 이상 크게 선언해야한다. 그 이유는 마지막에 널 문자(\0)를 저장하기 위해서다.
문자열 대입
char형 문자열 배열을 초기화 한 후에 그 값을 변경하고 싶으면 strcpy함수를 사용해야 한다. strcpy 함수는 char형 배열에 새로운 문자열을 저장하는 함수로, 저장할 문자열의 길이를 파악하여 딱 그 길이만큼만 char형 배열에 복사한다.
문자열 전용 입출력 함수 : gets, puts
scanf 함수는 char형 배열에 문자열을 입력할 수 있으나 중간에 빈칸이 있으면 빈칸 전까지만 저장된다. 빈칸을 포함한 새로운 문자열 입력방식을 쓰고 싶으면 gets 함수를 사용하면 된다. gets 함수는 빈칸을 포함하여 한 줄 전체를 문자열로 입력한다.