공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. |
배열은 같은 타입을 가진 변수들의 집합으로 볼 수 있다. 같은 타입의 변수들을 저장할 여러 개의 공간을 할당받는 것이므로 선언한 타입과 몇 개의 데이터를 저장할 것인지 에 따라 배열이 할당되는 크기가 달라진다.
배열을 이루는 각각의 값들을 배열의 요소(element), 각 요소들의 배열내에서의 위치를 가리키는 번호를 인덱스(index)라고 한다. 배열의 인덱스는 무조건 0번이 첫 번째 요소를 가리킨다.
배열은 1차원 배열과 다차원 배열이 존재하게 되는데 배열을 행렬처럼 생각한다면, 1차원 배열은 1개의 행을 가진 배열이다.
예) 아래의 표를 정수형 데이터를 가지는 1개의 배열이라고 하면
10 | 20 | 30 | 40 | 50 | 60 |
배열의 요소의 개수는 6개 인덱스는 0~5까지 이다 첫번쨰 요소라고 인덱스 번호가 1번이 아니므로 헷갈리지 말자.
1. 1차원 배열
문법) 타입 배열명[배열길이];
배열은 위와 같은 방법으로 선언하며 배열을 초기화하는 방법은 다양하다.
배열의 인덱스 번호를 이용하여 각각의 번호에 해당하는 공간에 데이터를 직접 입력하는 방법이다. 만약 배열의 요소의 값이 3개가 아니라 굉장히 많아진다면 이런 방법으로는 굉장히 많은 시간이 들게 된다.
따라서 반복문을 이용하여 인덱스 별로 데이터를 저장하는 방법을 생각할 수 있다. 반복문의 초기식을 인덱스의 첫 번째 번호와 같은 숫자로 선언하고 1씩 증가시키면 차례로 배열에 값을 저장할 수 있다.
2. 1차원 배열의 초기화
배열도 그냥 변수와 마찬가지로 선언과 동시에 초기화를 진행할 수 있다.
문법)
타입 배 열명[배열 길이] = {값 1, 값 2,...};
변수와 마찬가지로 선언과 동시에 = 연산자를 통해 값을 저장하는데 이때 {값 1, 값 2, 값 3,..} 이와 같은 형식의 리스트에 배열의 요소의 개수에 맞추어 값을 입력하면 차례로 저장된다.
배열에 아무런 값을 저장하지 않고 출력해보면 불필요한 쓰레기 값이 들어가 있는 것을 확인할 수 있으며 배 열명 자체만 호출할 경우 배열의 값이 전부 출력되지 않고 배열이 저장되어 있는 시작점의 메모리의 주소가 출력된다.
따라서 배열을 그대로 복사하려고 일반 변수와 같은 방법으로 시도할 경우 에러가 발생하게 된다.
배열의 길이를 자동으로 할당하는 방법도 존재한다.
문법)
타입 배 열명[] = {값 1, 값 2,...};
3개의 값을 입력하였으므로 2번 인덱스까지 정상적으로 값이 저장된 것을 확인할 수 있으며 생성되지 않은 인덱스를 호출할 경우 쓰레기 값이 출력되는 것을 확인 할 수 있다.
만약 배열의 원소를 외부 입력을 받아 요소의 개수가 몇 개인지 모를 경우도 존재할 수 있다. 그때 이용할 수 있는 함수가 존재하는데 sizeof()라는 함수이다 이 함수는 전달된 변수의 크기를 반환해 주는 함수이다.
즉 int형으로 선언된 요소의 개수가 3개인 배열이라면 int형의 크기 4 bytes짜리 공간이 3개 할당되므로 12가 반환된다. 그럼 이를 이용하여 (전체 배열의 크기)/(요소 1개의 공간 크기)를 수행한다면 몇 개의 요소가 들어있는 변수인지 찾아낼 수 있다.
sizeof()를 이용하여 배열의 요소의 개수의 크기를 계산하여 for문의 반복 횟수를 결정하여 출력한 모습이다. 배열 요소의 개수를 모를 경우 sizeof를 통해 알아낼 수 있다.
'언어 > C++' 카테고리의 다른 글
[C++ 기본 공부정리] 6. 포인터(pointer) (0) | 2019.11.22 |
---|---|
[C++ 기본 공부정리] 5-2. 배열(Array)-다차원(multidimensional arrays) (0) | 2019.11.21 |
[C++ 기본 공부정리] 4-2. 제어문-반복문 (0) | 2019.11.19 |
[C++ 기본 공부정리] 4-1. 제어문-조건문 (0) | 2019.11.17 |
[C++ 기본 공부정리] 3-2. 연산자(operator) (0) | 2019.11.15 |
댓글