같은 형태의 많은 데이터를 반복문으로 처리하기 위해 메모리에 연속적으로 저장해 놓고 쪼개서 사용하는 방법을 사용
설명이 더 직관적이고 받아들이기 쉽다!
하나의 이름으로 한꺼번에 확보하고 공간의 개수와 관계없이 이름은 하나만 사용
즉, 요소의 자료형에 이름을 붙이고 필요한 요소의 개수를 표시
int ary[5];
저장 공간이 연속으로 할당되며 배열명이 전체 공간의 이름이 됨
각각의 배열 요소는 개별 변수와 똑같이 사용하는데, 첨자는 0부터 시작
배열의 첨자는 0부터 시작하므로 배열 요소 개수 - 1까지만 값을 집어넣고 읽어 들일 수 있음
그러므로 배열 범위를 벗어나는 곳에 접근하려 하지도 말고, 코딩도 정신차려서 해야 한다.
원하는 값을 갖고 시작하게 하려면 선언과 동시에 초기화
배열은 중괄호로 묶어서 초기화
1) 기본적인 초기화 방법
int ary[5] = {1, 2, 3, 4, 5};
2) 초기값이 배열 요소의 개수보다 적은 경우: 왼쪽부터 차례로 초기화하고 남은 배열 요소는 모두 0으로
3) 자동 초기화 기능: 배열 요소가 많더라도 모든 요소를 동일한 값으로 초기화할 수 있음
4) 배열 요소 개수가 생략되었더라도 뒤에 초기화 값에 맞춰서 배열을 생성
5) 각 자료형에 맞게 초기화됨
주의: 초기화는 선언 시 최초 한 번만 가능!
배열 요소의 개수를 직접 계산해 반복문에 사용하는 방법
배열요소의 개수 = sizeof(배열명) / sizeof(배열 요소)
배열요소의 개수 = 배열 전체 크기 / 배열 요소 하나의 크기
메모리에 문자를 순서에 맞게 연속으로 저장하려면 배열이 단어를 저장하기 위한 가장 좋은 방법임
그리고 모든 알파벳 문자는 1바이트로 충분히 표현할 수 있으므로 char형 배열을 사용하자
앞에서 배운 배열의 선언과 초기화대로 하면 되지만,
주의: NULL문자 \0
를 저장하기 위해 최소 여분의 1바이트 공간이 필요함
남는 배열 요소에는 자동으로 아스키 코드 값이 0인 문자 (\0)가 채워지는데, 이는 문자열의 끝을 표시하는 용도로 사용하기 때문임
1) 배열의 크기는 최대한 넉넉하게 선언해야 함
2) 배열 요소의 개수는 최소한 '문자열 길이 + 1'이어야 함
일반 변수처럼 대입 연산자를 사용하여 새로운 문자열을 저장할 수 없음
strcpy함수를 사용
#include <string.h>
strcpy(str1, str2);
첫 번째 인수는 문자열 상수를 쓸 수 없고, 배열의 크기가 충분히 커야함
두 번째 인수는 문자열 상수 혹은 char형 배열을 쓸 수 있음
gets는 scanf 함수와 달리 빈칸을 포함해 한 줄 전체를 문자열로 입력할 수 있음
즉, 문자열 입력 중간에 빈칸이나 탭 문자를 사용할 수 있고, enter키를 누르기 전까지 전체를 하나의 문자열로 배열에 저장, 마지막에 널 문자를 붙여서 문자열의 끝을 표시
주의: 배열의 크기를 검사하지 않으므로 항상 배열의 크기를 생각해서 받도록 해야함