[chapter 08 배열]
08-1 배열의 선언과 사용
배열의 선언
-배열은 선언을 통해 저장공간 확보, 하나씩 선언하지 않고 하나의 이름으로 변수를 여러 개 선언
-선언 방법: 요소의 자료형에 이름을 붙이고 필요한 선언의 개수를 표시
int ary[5];
자료형 배열명 요소개수
배열의 사용
-배열 요소는 배열의 나누어진 조각을 의미, 배열명에 첨자를 붙여 표현
-선언의 대괄호: 배열 요소의 전체 개수, 사용의 대괄호: 배열에서 각 요소의 위치
배열 초기화
-배열은 원하는 값을 가지기 위해 선언과 동시에 {}로 묶어서 초기화
-배열의 초기화는 선언 시 최초 한 번만 가능
-초기화 방법
1. 기본 초기화
int ary[5] = {1,2,3,4,5};
=> 첫 번째 요소부터 차례로 초기화
2. 초기값이 배열 요소의 개수보다 적은 경우
int ary[5] = {1,2,3};
=> 왼쪽부터 차례로 초기화하고 남은 배열 요소는 모두 0
3. 자동 초기화 기능
int ary[1000] = {0};
=> 배열 요소 개수 상관없이 쉽게 0으로 초기화
4. 배열 요소 개수 생략
int ary[] = {1,2,3};
=> 초기값 개수만큼 배열 요소 개수를 정하고 저장 공간 할당
5. double형과 cha형 배열을 선언하고 초기화
double ary[5] = {1.0, 2.1, 3.2, 4.3, 5.4};
char ary[5] = {'a', 'p', 'p', 'l', 'e'};
배열과 반복문
-연속된 배열 요소를 일일이 변수처럼 하나씩 떼어서 사용 => 배열 활용 X
-배열과 반복문의 활용으로 많은 데이터를 쉽게 대응
sizeof 연산자를 활용한 배열 처리
-배열 요소의 개수를 계산해 반복문에 사용
배열 요소의 개수 = sizeof(배열명) / sizeof(배열 요소)
예) count = sizeof(score) / sizeof(score[0]);
08-2 문자를 저장하는 배열
char형 배열의 선언과 초기화
-저장할 문자열의 길이보다 최소한 하나 이상 크게 배열 => 널문자를 저장하기 위해서
-중괄호 없이 문자열 상수로 초기화
char str[80] = "applejam";
널문자 (\0)
-char형 배열에 저장된 0
-아스키 코드 값이 0인 문자
-문자의 끝을 표시하여 함수가 문자열을 정확히 출력
-주의
1. 초기화 하지 않은 상태에서 배열 요소에 문자를 대입한다면 반드시 마지막 문자 다음에 널문자를 대입
2. 배열의 크기는 최대한 넉넉하게
3. 배열 요소의 개수는 최소한 문자열 길이 + 1
문자열 대입
strcpy 함수: char형 배열에 새로운 문자열을 저장하는 함수
strcpy(저장될 배열명, 저장할 문자열)
첫 번째 인수는 충분히 커야 하고, 문자열 상수를 사용 불가
두 번째 인수는 문자열 상수 뿐만 아니라 배열명도 사용 가능
올바른 예) strcpy(str1, "tiger");
strcpy(str2, str1);
잘못된 예) strcpy("lion", "tiger");
문자열 전용 입출력 함수: gets, puts
gets 함수는 빈칸을 포함해 한 줄 전체를 문자열로 입력, 짝을 이루는 문 자열 출력 함수 puts
gets(char형 배열명)
:엔터 누르기 전까지를 하나의 문자열로 배열에 저장 (빈칸이나 탭 문자 가능)/ 널문자를 붙여 문자열의 끝을 표시/ 배열의 크기 고려
puts 함수
:문자열 출력 함수 (문자열 출력 후 자동으로 줄을 바꾸는 기능 O)
널문자에 대해 추가 코딩
널문자가 없는 문자열로 OK 이후로 쓰레기 값이 출력됨
=> 08행 이후 printf 전에 str[2] = '\0';을 넣어서 문자열의 끝을 알리는 널문자 추가
#include <stdio.h>
int main(void)
{
char str[5];
str[0] = 'O';
str[1] = 'K';
printf("%s\n", str);
return 0;
}
기본숙제 및 추가숙제: 블로그 내용