[혼공C] 5주차 chapter 08. 배열

회색몽구스·2024년 2월 1일
0

08-1 배열의 선언과 사용

  • 배열을 사용하는 이유

같은 형태의 많은 데이터를 반복문으로 처리하기 위해 메모리에 연속적으로 저장해 놓고 쪼개서 사용하는 방법을 사용

설명이 더 직관적이고 받아들이기 쉽다!

배열의 선언

하나의 이름으로 한꺼번에 확보하고 공간의 개수와 관계없이 이름은 하나만 사용
즉, 요소의 자료형에 이름을 붙이고 필요한 요소의 개수를 표시

int ary[5];

저장 공간이 연속으로 할당되며 배열명이 전체 공간의 이름이 됨
각각의 배열 요소는 개별 변수와 똑같이 사용하는데, 첨자는 0부터 시작

배열의 사용

배열의 첨자는 0부터 시작하므로 배열 요소 개수 - 1까지만 값을 집어넣고 읽어 들일 수 있음
그러므로 배열 범위를 벗어나는 곳에 접근하려 하지도 말고, 코딩도 정신차려서 해야 한다.

배열 초기화

원하는 값을 갖고 시작하게 하려면 선언과 동시에 초기화
배열은 중괄호로 묶어서 초기화

1) 기본적인 초기화 방법

  • 배열 개수를 선언하고 그에 맞게 초기화
int ary[5] = {1, 2, 3, 4, 5};

2) 초기값이 배열 요소의 개수보다 적은 경우: 왼쪽부터 차례로 초기화하고 남은 배열 요소는 모두 0으로
3) 자동 초기화 기능: 배열 요소가 많더라도 모든 요소를 동일한 값으로 초기화할 수 있음
4) 배열 요소 개수가 생략되었더라도 뒤에 초기화 값에 맞춰서 배열을 생성
5) 각 자료형에 맞게 초기화됨

주의: 초기화는 선언 시 최초 한 번만 가능!

배열과 반복문

sizeof 연산자를 활용한 배열 처리

배열 요소의 개수를 직접 계산해 반복문에 사용하는 방법

배열요소의 개수 = sizeof(배열명) / sizeof(배열 요소)
배열요소의 개수 = 배열 전체 크기 / 배열 요소 하나의 크기

08-2 문자를 저장하는 배열

메모리에 문자를 순서에 맞게 연속으로 저장하려면 배열이 단어를 저장하기 위한 가장 좋은 방법임
그리고 모든 알파벳 문자는 1바이트로 충분히 표현할 수 있으므로 char형 배열을 사용하자

char형 배열의 선언과 초기화

앞에서 배운 배열의 선언과 초기화대로 하면 되지만,

주의: NULL문자 \0를 저장하기 위해 최소 여분의 1바이트 공간이 필요함

널 문자의 용도

남는 배열 요소에는 자동으로 아스키 코드 값이 0인 문자 (\0)가 채워지는데, 이는 문자열의 끝을 표시하는 용도로 사용하기 때문임

char형 배열 선언 시 주의할 점

1) 배열의 크기는 최대한 넉넉하게 선언해야 함
2) 배열 요소의 개수는 최소한 '문자열 길이 + 1'이어야 함

문자열 대입

일반 변수처럼 대입 연산자를 사용하여 새로운 문자열을 저장할 수 없음
strcpy함수를 사용

#include <string.h>
strcpy(str1, str2);

첫 번째 인수는 문자열 상수를 쓸 수 없고, 배열의 크기가 충분히 커야함
두 번째 인수는 문자열 상수 혹은 char형 배열을 쓸 수 있음

문자열 전용 입출력 함수: gets, puts

gets는 scanf 함수와 달리 빈칸을 포함해 한 줄 전체를 문자열로 입력할 수 있음
즉, 문자열 입력 중간에 빈칸이나 탭 문자를 사용할 수 있고, enter키를 누르기 전까지 전체를 하나의 문자열로 배열에 저장, 마지막에 널 문자를 붙여서 문자열의 끝을 표시
주의: 배열의 크기를 검사하지 않으므로 항상 배열의 크기를 생각해서 받도록 해야함

profile
끄아아아아 할 수 있다

0개의 댓글