1차원 배열
1차원 배열은 여러 개의 동일한 타입의 데이터를 연속적으로 저장하는 구조입니다. 또한, 인덱스를 사용하여 각 요소를 참조하고 조작할 수 있습니다.
배열의 선언
배열을 선언하려면 먼저 데이터 유형을 지정한 다음 대괄호[] 를 사용하여 배열의 길이를 지정합니다. 예를 들어, int arr[5];는 길이가 5인 정수 배열을 선언합니다.
int arr[5];
C
복사
배열의 접근
배열에 접근하려면, 대괄호[] 안에 원하는 요소의 인덱스를 지정합니다. 첫 번째 요소의 인덱스는 0이며, 마지막 요소의 인덱스는 배열의 길이 - 1입니다. 예를 들어, arr[0]는 배열 arr의 첫 번째 요소를 참조합니다.
int arr[3]; // 길이가 3인 int형 1차원 배열
arr[0] = 10; // 0번째 10 대입
arr[1] = 12; // 1번째 12 대입
arr[2] = 25; // 2번째 25 대입
C
복사
배열의 초기화
배열을 초기화하려면 배열을 선언하는 동시에 각 요소에 값을 할당합니다. 예를 들어, int arr[3] = {10, 12, 25};는 길이가 3인 정수 배열을 선언하고 각 요소에 10, 12, 25를 할당합니다.
int arr[3] = {10, 12, 25}; // 0번째에 10, 1번째에 12, 2번째에 25 할당
int arr[] = {1, 2, 3}; // 컴파일러에 의해 자동으로 [] 안에 3 삽입
int arr[3] = {1, 2}; // 3번 째 요소는 0으로 채워짐
C
복사
배열을 이용한 문자열 변수
char형 배열의 문자열 저장
C 언어에서 문자열은 문자의 배열로 저장되며, 문자열의 끝은 null 문자('\0')로 표시됩니다. 예를 들어, char name[7] = "DoTTak";은 'D', 'o', 'T', 'T', 'a', 'k', '\0'의 7개의 문자를 저장하는 char형 배열을 선언하고 초기화합니다.
char name[7] = "DoTTak"; // 'D', 'o', 'T', 'T', 'a', 'k', '\0'의 7개의 문자를 저장
char str[] = "Hello, world!"; // 컴파일러에 의해 자동으로 [] 안에 문자열의 길이 삽입
C
복사
문자열의 입력
문자열을 입력하려면, scanf 함수를 사용할 수 있습니다. 그러나 scanf는 공백을 만나면 문자열 입력을 종료합니다. 따라서 한 줄에 여러 단어 또는 문장을 입력하려면 fgets 함수를 사용해야 합니다.
char str[100];
scanf("%s", str); // 공백을 만나면 입력 종료
fgets(str, sizeof(str), stdin); // 한 줄 전체를 입력 받음
C
복사
문자배열과 문자열의 차이
char arr1[] = {'H', 'I', '~'}; // 마지막에 널 문자가 없으므로 문자 배열
char arr2[] = {'H', 'I', '~', '\0'}; // 마지막에 널 문자가 있으므로 문자열
C
복사
예제 출력
$ gcc -o 1d_array.o 1d_array.c
$ ./1d_array.o
[*] 배열의 선언 및 초기화
int arr[5];
arr[0] = 10
arr[1] = 20
arr[2] = 30
>> 10 20 30 1805168752 1
int arr1[5] = {1, 2, 3, 4, 5};
>> 1 2 3 4 5
int arr3[] = {1, 2, 3};
>> 1 2 3
int arr2[5] = {1, 2, 3};
>> 1 2 3 0 0
[*] char형 배열의 문자열 저장과 널(Null) 문자
char str1[] = "Hello";
배열 str의 크기: 6
널 문자 문자형 출력:
널 문자 정수형 출력: 0
[*] 배열을 이용한 문자열 변수
char name[7] = "DoTTak";
>> DoTTak
char str2[] = "Hello, world!";
>> Hello, world!
[*] 문자열 입력 받기
scanf()
아무런 문자를 입력해주세요: Hello I'm DoTTak
>> Hello
fgets()
아무런 문자를 입력해주세요: Hello I'm DoTTak
>> Hello I'm DoTTak
Shell
복사