배열의 선언과 사용
배열의 선언
1 | int array[5]; // 자료형 배열명[요소 개수]; |
array라는 배열을 선언하고 원소의 개수를 5개로 지정하였습니다. int형은 크기가 4바이트 이므로, 이 배열의 크기는 4*5 인 20이 됩니다 (5개의 int를 선언한것과 같은 크기를 가집니다)
5개의 원소는 index를 사용해 각 원소를 얻을 수 있습니다.
array는 [element, element, element, element, element] 으로 이루어져있고, 첫 번째 부터 0~4로 indexing을 통해 얻을 수 있습니다.
배열의 원소는 다음처럼 사용합니다
1 | array[0] = 10; // 1번째 원소를 10으로 지정함 |
배열의 값을 지정하지 않았다면, 해당 원소는 garbage value를 가집니다.
몇 가지 배열을 초기화하는 방법은 아래와 같습니다.
1. 기본적인 방법
1 | int array[5] = {1,2,3,4,5}; |
2. 초기값이 배열 요소의 개수보다 적은 경우
1 | int array[5] = {1,2,3}; |
이 경우 차례로 1,2,3을 채우고 나머지는 0으로 채우게 됩니다.
3. 자동 초기화
1 | int array[1000] = {0}; |
4. 배열의 원소개수가 생략되는 경우
1 | int array[] = {1,2,3}; |
이 경우, 초기값의 개수만큼 array의 개수를 확보한다.
5. 다른 변수 타입으로 선언하고 초기화
1 | double array[5] = {1.1, 2.4, 3.6, 3.2, 1.2}; |
배열은 연속으로 저장곤간을 할당하고 초기화 할수 있으며, 반복적인 작업을 할 때에 반복문을 사용하면 편리합니다.
예를 들어, 아래는 반복문을 이용해 scores라는 array의 0부터 4번째 원소를 scanf로 받아 지정하는 코드입니다.
1 | int scores[5]; |
sizeof 연산자는 자료형의 크기를 바이트 단위로 알려주는 함수입니다.
예를 들어 int형의 경우 4를, int가 5개로 이루어진 array의 경우 20을 반환합니다.
array의 원소하나의 크기를 알 수 있으므로, sizeof연산자를 사용하면 배열의 길이를 알 수 있습니다
1 | int scores[5]; |
문자를 저장하는 배열
문자열을 저장하기 위해서는 배열을 사용해야하며,
알파벳 문자는 1바이트로 표현할 수 있으므로 char 형 배열을 사용하는 것이 좋습니다.
기억해야 할 것은, 지정할 문자열의 길이보다 최소한 하나 더 크게 배열을 선언해야합니다.
예를 들어, apple을 배열에 저장한다면 최소 6개의 길이로 지정해야 합니다.
이는 널 문자 (null character)인 \0를 저장하기 위해서입니다.
1 | char str[6] = "apple"; |
위 처럼 “apple”을 지정하면 남은 1개의 원소는 널 문자 \0 이 채워집니다.
⭐ 널 문자는 문자열의 끝을 표시하는 용도로 사용됩니다.
위 str를 printf로 출력하면 apple만 출력되는 이유는 끝에 널문자가 있기 때문입니다.
1 | scanf("%s", str); // "app" 입력 |
위 코드를 진행하고 “app”을 입력하면 str 변수에는 새로 “app”이 앞부터 순서대로 입력되며 4번째에 널문자가 자동으로 저장됩니다.
char 배열 선언시 주의점
- 배열의 크기는 최대한 넉넉하게 선언해야한다.
- 배열 원소의 개수는 최소한 “문자열 길이 + 1” 이어야 한다.
strcpy 함수
선언된 char 형 배열에 문자열을 새로 대입할 수 있으나, 문자열의 길이가 다르면 대입 연산자 (=)를 사용하는 것은 불가능합니다. 이 때, strcpy를 사용합니다.
사용 방법은 아래와 같습니다.
1 | strcpy(배열명, 저장할 문자열); |
1 | char str[10] = "cat"; |
gets, puts 함수
gets 함수는 scanf 함수처럼 입력되는 문자열을 입력할 수 있습니다.
차이점은 gets함수는 빈칸 (스페이스)도 입력이 가능합니다.
또한 이 함수와 같이 사용되는 puts 함수도 있습니다.
설명하자면,
- gets 함수는 char 형의 배열명을 받아서, 문자열을 입력하는 함수입니다.
- puts 함수는 char 형의 배열명을 받아서, 문자열을 출력하는 함수입니다.
예시
1 | char str[80]; |
오늘은 C언어에서 Array를 사용하는 방법을 정리해보았습니다. 감사합니다 ~ 👋👋