다수의 정보를 저장하기 위해 변수를 여러 개 선언하는 것은 매우 번거롭다.
이때는 배열을 선언하면 된다.
1차원 배열을 선언하기 위해서는 배열을 이루는
요소의 자료형,
배열의 이름,
배열의 길이가 필요하다.
간단한 예제들이다.
일일히 다 넣는 방법이다.
반복문을 사용한다면 아래와 같다.
위의 반복문에는 i범위에 숫자를 직접 줬다.
아래는 sizeof함수로 숫자를 대신 넣어봤다.
n의 사이즈인 20
int의 사이즈인 4
둘을 나눈 5가 i의 범위가 된다.
반복문으로 알파벳에 1씩 더해서 알파벳 전체를 출력시켜봤다.
arr[0] = 10으로 arr 배열의 첫 번째 요소에 10을 저장한다.
이렇게 선언된 1차원 배열에 접근할 수 있다.
배열 선언과 동시에 초기화하기
arr2는 컴파일러가 배열의 길이정보를 채워준다.
관련 예제를 보자.
// 배열 선언, 초기화, 접근 예제
#include <stdio.h>
void main(void)
{
int arr1[5] = { 1, 2, 3, 4, 5 };
int arr2[ ] = { 1, 2, 3, 4, 5, 6, 7 };
int arr3[5] = { 1, 2 };
int arrlen1, arrlen2, arrlen3, i;
printf("배열 arr1의 크기: %d \n", sizeof(arr1));
printf("배열 arr2의 크기: %d \n", sizeof(arr2));
printf("배열 arr3의 크기: %d \n\n", sizeof(arr3));
arrlen1 = sizeof(arr1) / sizeof(int);
arrlen2 = sizeof(arr2) / sizeof(int);
arrlen3 = sizeof(arr3) / sizeof(int);
for (i = 0; i < arrlen1; i++)
printf("%d ", arr1[i]);
printf("\n");
for (i = 0; i < arrlen2; i++)
printf("%d ", arr2[i]);
printf("\n");
for (i = 0; i < arrlen3; i++)
printf("%d ", arr3[i]);
printf("\n");
}
char형 배열의 문자열 사용 및 입출력
널 문자
배열에 문자열을 저장하면, 문자열의 끝에 널 문자라고 불리는
\0가 삽입된다.
널 문자는 문자열의 끝을 의미한다.
널 문자는 %c를 이용해서 출력 시 아무것도 나오지 않고, 실제로
모니터 출력에서 아무런 의미를 갖지 않는다.
아스키 코드 값은 0이다.
공백의 아스키 코드 값은 32이다.
문자열과 문자 배열은 다르다.
문자열에는 꼭 널 문자가 들어간다.
char arr1[ ] = { 'A', 'B' }; // 문자배열 char arr2[ ] = { 'A', 'B', '\0' }; // 문자열 |
문자열에서 널 문자가 필요한 이유
배열의 시작위치에서 문자열이 저장되기 시작하므로, 시작위치는 쉽게 확인이 가능하다.
하지만 배열의 끝이 무조건 문자열의 끝은 아니므로 널 문자가 삽입되지 않으면
문자열의 끝은 확인 불가능하다.
아래의 간단한 예를 보자.
배열 str의 시작위치를 기준으로해서 널 문자를 만날 때까지 출력을 한다.
scanf 함수를 이용한 문자열 입력
scanf함수로 서식문자 %s를 사용해서 문자열을 입력할 수 있다.
문자열은 &연산자를 붙이지 않는다.
scanf 함수의 문자열 입력 특성
scanf 함수는 공백을 기준으로 데이터의 수를 구분하기 때문에
공백을 포함하는 문자열을 한번의 scanf 함수호출로 읽을 수 없다.
'공부 > C언어' 카테고리의 다른 글
(C 예제) 포인터 정리 및 예제 (0) | 2020.06.26 |
---|---|
(C 예제) 배열 예제(암호 전달/크기 순으로 정렬/절대값 순으로 정렬) (0) | 2020.06.26 |
(C 예제) 재귀 함수 (0) | 2020.06.25 |
(C 예제) 함수 정리 및 예제, static 변수 (0) | 2020.06.25 |
(C 예제) 로또 번호 출력하기/가위바위보 및 응용 (0) | 2020.06.23 |