[열혈C프로그래밍] chapter 10. 1차원 배열
chapter 10
1차원 배열
10-1 배열의 이해 & 배열의 선언 & 초기화
-
- 배열이란?
- 가장 많이 쓰이는 자료구조 중 하나
int arr[100]; // 길이가 100인 int형 1차원 배열: 정수 100개 저장 가능. // sizeof(arr) = 100*4 =400 byte
- 배열의 선언의 필요 요소
- 배열을 이루는 요소의 자료형 (int)
- 배열의 이름 (arr)
- 배열의 길이 ([100]): 나란히 메모리 공간에 할당된다.
10-2 배열을 이용한 문자열 변수의 표현
- c언어는 큰 따옴표를 이용해 문자열을 표현한다.
char str[14] = "Good morning!"; printf("%c\n",str[0]); // str[0] = G 이다.
배열 str :
|G|o|o|d| |m|o|r|n|i|n|g|!|\0| |-|-|-|-|-|-|-|-|-|-|-|-|-|–|
- \0은 문자열에 자동으로 삽입되는 널문자라 한다.
- 배열의 인덱스는 0에서부터 시작한다.
-
C언어에서 표현하는 모든 문자열의 끝에는 널문자(\0)가 삽입된다.
- scanf ```c char arr[10]; scanf(“%s”, arr); // 배열의 이름이 곧 주소값을 나타내므로 scanf에서 &연산자를 따로 붙히지 않는다. // scanf 함수호출을 통해서도 입력받은 문자열의 끝에도 널 문자가 삽입된다.
```
scanf함수는 데이터를 구분하는 기준이 공백이라
입력을 He is my friend 라 할 때 He 만 인식하여 He만 저장한다.
=> 따라서 ‘He is my friend’를 입력받는 더 적절한 함수는 나중에 알아보기로 하자.
문자열의 끝에 null문자가 필요한 이유
본래 문자열은 이진 데이터로 저장 되기 때문에 문자열의 끝을 알수 없다.
(문자열의 시작 부분은 배열의 처음 부분(str[0])으로 구분할 수 있다.)
따라서 문자열을 구분하기 위해 끝을 나타내는 기준이 필요한데
지금 c언어에서는 null문자(\0)가 그 기준이 되고 있는 것이다.