용어체크
1. 배열
(Array)
- 많은 값을 한꺼번에 저장할 수 있는 저장 장소
- 동일한 타입의 데이터가 여러 개 저장되는 저장 장소
- 같은 종류의 대량의 데이터를 효율적이고 간편하게 처리하는 방법
2. 배열 요소
(array element)
- 배열을 구성하는 각 항목
3. 인덱스
(index)
- 배열 요소의 번호
학습내용
|
1. 배열의 개념
1) 개요
변수 : 오직 하나의 값만 저장할 수 있음
배열 : 많은 값을 한꺼번에 저장할 수 있는 저장장소. 동일한 타입의 데이터가 여러 개 저장되는 저장장소이다. 정리하자면 같은 종류의 대량의 데이터를 효율적으로 관리할 수 있는 방법이라고 할 수 있다.
2) 배열 요소와 인덱스
배열 요소 또는 배열 원소 : 배열을 구성하는 각 항목이다.
인덱스, 첨자 : 배열 요소의 번호. 정수, 정수 변수, 수식 등이 가능함
배열의 크기 :
3) 배열의 선언
int scores[10];
자료형 : 배열 원소들의 타입
배열 이름 : scores
배열 크기 : 배열 원소 개수 10개
인덱스(배열 번호)는 항상 0부터 시작, 0 ~ (n-1)이다.
배열 선언의 예시...
#define 사용
기호 상수로 배열 크기를 지정할 수 있다. 배열 선언 시 배열의 크기를 기호 상수로 지정하면 수정하기가 쉽다.
예 :
#define SIZE 5
int b[SIZE];
2. 배열과 반복문
1) 배열 접근
잘못된 인덱스 문제 : 인덱스가 배열의 크기를 벗어나게 되면 프로그램에 치명적인 오류를 발생시킨다. C에서는 인덱스가 범위를 벗어나지 않았는지 프로그래머가 확인하고 책임을 져야 한다.
배열의 가장 큰 장점 : 반복문을 사용하여 배열의 원소를 간편하게 처리할 수 있다는 점이다.
3. 배열의 초기화
1) 개요
배열의 초기화 : 원소들의 초기값을 콤마로 분리, 중괄호 사용, 순서대로 대입
int a[5] = {10, 20, 30, 40, 50};
주의사항
초기값의 개수가 배열 크기보다 큰 경우 -> 오류
초기값의 개수가 배열의 크기보다 작은 경우 : 앞에 있는 요소들만 초기화되고, 나머지 배열 요소들은 모두 0으로 초기화된다. 이를 이용해 -> 배열의 모든 요소를 0으로 초기화 : int a[5] = { 0 }; 으로 가능하다. 이 방법은 배열의 크기가 몇개이든 사용할 수 있다.
배열의 크기 없이 초기값만 있는 경우 : 컴파일러가 자동으로 초기값들의 개수만큼 배열의 크기를 잡는다. 그러나 배열의 크기는 꼭 써주도록 하자.
2) 초기화 예제
...
3) 배열의 사용
배열 요소의 개수 계산
배열의 복사
잘못된 방법 int score1[SIZE]; int score2[SIZE]; score1 = score2; // 배열의 이름(여기서는 score)에는 배열의 시작주소가 들어간다. 따라서 위 문장은 배열의 주소를 대입하고 있는 문장이 된다. |
올바른 방법 int score1[SIZE]; int score2[SIZE]; int i; for(i = 0; i < SIZE; i++) score1[i] = score2[i]; // 따라서 이처럼 배열의 원소를 하나씩 대입해야 배열을 올바르게 복사할 수 있다. |
배열의 비교 : 배열 내용 전체를 다른 배열 내용 전체와 같은지 비교 -> 이 역시 원소를 하나씩 비교해야 한다.
int a[5]와 int b[5]를 비교할 때 if(a==b)를 사용하면 두 배열의 내용이 같은지 비교가 될까요?
배열의 이름은 배열이 저장된 메모리의 주소와 같습니다. 따라서 int a[5]와 int b[5]를 비교할 때 if(a==b)를 사용하면 배열의 내용을 비교하는 것이 아니라 각 배열이 저장된 메모리의 주소를 비교하는 것이 됩니다.
Quiz 01배열이 초기화에서 초기값의 개수가 배열의 크기보다 작은 경우에는 컴파일 오류가 발생한다.
- 1 O
- 2 X
정답 :2
해설 :앞에 있는 요소들만 초기화 되고, 나머지 배열 요소들은 모두 0으로 초기화 된다.
Quiz 02배열이 10개의 요소를 가진다면 첫 번째 요소의 배열 인덱스는 무엇인가?
- 1 -1
- 2 0
- 3 1
- 4 0 또는 1
정답 :2
해설 :배열의 인덱스는 0~(배열크기-1)의 정수를 사용한다.
Quiz 03다음 중 선언문으로 옳은 것은?
- 1 int a[200] ;
- 2 int a[] ;
- 3 int a[2+1] ;
- 4 int a[10.2] ;
정답 :1
해설 :배열크기를 생략하거나, 배열크기로 수식이나 실수를 사용할 수 없다.
학습정리
1. 배열의 개념
- 배열(Array): 동일한 타입의 데이터가 여러 개 저장되는 저장 장소
- 배열 요소(array element) 또는 배열 원소: 배열을 구성하는 각 항목
- 인덱스(index), 첨자(subscript): 배열 요소의 번호
2. 배열과 반복문
- 배열은 반복문을 사용하여 배열의 원소를 간편하게 처리할 수 있음
3. 배열의 초기화
- 배열의 초기화는 원소들의 초기값을 콤마로 분리하고 중괄호를 사용
- 초기값의 개수가 배열 크기보다 큰 경우에는 컴파일 오류가 발생
- 초기값의 개수가 배열의 크기보다 작으면 앞에 있는 요소들만 초기화 되고 나머지 배열 요소들은 모두 0으로 초기화됨
'컴퓨터공학 > C언어' 카테고리의 다른 글
C언어 12 - 1 포인터의 개념 (0) | 2021.11.14 |
---|---|
C언어 11 - 2 배열과 함수 (0) | 2021.11.14 |
C언어 10주 2차 재귀 함수의 이해 (0) | 2021.10.27 |
C 언어 10 - 1 함수와 기억 클래스 (0) | 2021.10.23 |
C 언어 9 - 2 함수 호출 (0) | 2021.10.19 |