본문 바로가기
C

배열

by 긍열! 2021. 6. 1.
728x90

int score[100]={10, 5, 6, 2, 9, ...,4};

 

'score'란 이름을 가진 배열([])이고, 이 배열은 100개의 연속된 메모리 공간을 갖고, 각 메모리 공간은 int에 해당하는 값이다. 

그리고 그 값은 차례대로 10, 5, 6, 2 ...,4의 값을 저장한다. 

 

0. 배열을 왜 쓸까?

1. 데이터를 정리하기 위해. 

 노트, 샤프, 연필, 펜이 널브러져 있는 책상이 있다. 그럼 우리는 정리를 한다. 노트는 책장에, 펜과 샤프는 필통에, 연필은 연필꽂이에. 비슷한 물건들끼리 모아 정리를 하는 것이다. 각종 물건들이 곧 데이터, 책장과 필통 그리고 연필꽂이에 각각 정리된 물건들을 배열이라고 생각하면 된다. 다만 배열은 데이터 간의 순서가 있기에 순서 없이 한 데 모인 물건들과는 이 점에서 차이가 있다.

 

100개의 정수를 int score1=10; int score2=5;...이렇게 하나하나 저장할 수 있지만, 이는 데이터가 흩어져 있는 것이다. 하지만 배열을 써 int score[100]={10, 5, 6, 2, 9, ...,4]; 의 코드를 쓰면 깔끔하게 정리가 된다.

 

2. 왜 정리를 할까?

 책상 정리는 깔끔해 보이기 위해서도 있지만 물건을 빠르게 찾아 가져다 쓸 수 있기 때문이다. 노트 아래 깔린 펜, 샤프, 연필들을 뒤적거리다 연필을 찾아 쓰는 것보다 연필꽂이에서 바로 연필을 꺼내 쓰는 것이 훨씬 빠르다. 배열도 각각의 데이터를 찾아 쓰기 편하기 때문에 사용한다. "? 그런가? score1이나 score[0]이나 비슷하지 않나?" 이때, 우리는 이걸 생각해야 한다. '컴퓨터가' 데이터를 빠르게 가져다 쓸 수 있기 때문이다. 

 

3. 왜 더 빠를까?

  노트들을 한 데 모아 책꽂이에 꽂아두면 노트가 필요할 때 "책장에 있겠다."라고 생각하고 책장의 노트들을 몇 번만 탐색한 뒤 원하는 노트를 찾아낼 수 있다. 배열도 그렇다. 컴퓨터가 배열의 데이터들을 금방 가져다 쓸 수 있는 이유는, 컴퓨터에 각 데이터를 저장해 둔 장소가 연속적으로 같이 모여있기 때문이다. 즉 데이터가 저장된 주소가 연속적으로 한 데 모여 있다. 

 왼쪽 그림이 각각의 변수로 저장된 모습이라면, 오른쪽 그림이 배열로 저장된 모습이다. 배열의 주소값이 4만큼씩 차이가 나는 이유는 int 정수형의 데이터 크기가 4이기 때문이다. score[i]의 인덱스 값 i값만 안다면 데이터 값이 저장된 주소에 4의 배수씩 더하거나 빼면서 빠르게 접근할 수 있고 이 특성을 이용해 for문을 사용해 i값을 변경시키며 순서에 맞게 데이터 값들을 사용할 수 있게 된다. 

728x90

'C' 카테고리의 다른 글

배열에서 최댓값 인덱스 찾기  (0) 2021.06.02
고정소수점과 부동소수점  (1) 2021.02.09
확장열(Escape Sequence, 제어 시퀀스, 특수문자, 이스케이프시퀀스)  (0) 2021.01.14
데이터 타입  (0) 2021.01.04
printf 함수  (0) 2021.01.04