컴퓨터공학/배열

배열

도전하는일반인 2021. 9. 15. 21:02

들어가기 전에

우리가 특정 자료형의 변수를 선언하면 이는 메모리상 어딘가에 특정 크기만큼의 자리를 차지하게 됩니다. 만약 비슷한 종류의 값을 모아서 저장하고 싶다면 어떻게 해야 할까요? 메모리상에서 여러 값을 연이어서 저장하고 사용하는 방법과 그 이점을 알아보겠습니다.

 

학습 목표

배열을 정의하고 사용하는 방법을 설명할 수 있습니다

 

핵심 단어

  • 배열

메모리

C에는 아래와 같은 여러 자료형이 있고, 각각의 자료형은 서로 다른 크기의 메모리를 차지합니다.

  • bool: 불리언, 1바이트
  • char: 문자, 1바이트
  • int: 정수, 4바이트
  • float: 실수, 4바이트
  • long: (더 큰) 정수, 8바이트
  • double: (더 큰) 실수, 8바이트
  • string: 문자열, ?바이트

 

컴퓨터 안에는 아래 사진과 같은 RAM 이라고 하는 물리적 칩이 메모리 역할을 합니다.

쉽게 생각하면 아래 사진에서 여러 개의 노란색 사각형이 메모리를 의미하고, 작은 사각형 하나가 1바이트를 의미한다고 볼 수 있습니다.

 

예를 들어 char 타입의 변수를 하나 생성하고, 그 값을 입력한다고 하면 위 사진에서 한 사각형 안에 그 변수의 값이 저장되는 것이죠.

 

배열

아래와 같이 세 개의 점수를 저장하고 그 평균을 출력하는 프로그램이 있습니다.

#include <cs50.h> #include <stdio.h> int main(void) { // Scores int score1 = 72; int score2 = 73; int score3 = 33; // Print average printf("Average: %i\n", (score1 + score2 + score3) / 3); }

만약 점수의 개수가 더 많아진다면 이 프로그램은 많은 부분을 수정해줘야 합니다.

이 때 활용할 수 있는 것이 배열의 개념입니다.

배열은 같은 자료형의 데이터를 메모리상에 연이어서 저장하고 이를 하나의 변수로 관리하기 위해 사용됩니다.

위 코드는 배열을 이용하면 아래와 같이 바꿀 수 있습니다.

 

#include <cs50.h> #include <stdio.h> int main(void) { // Scores int scores[3]; scores[0] = 72; scores[1] = 73; scores[2] = 33; // Print average printf("Average: %i\n", (scores[0] + scores[1] + scores[2]) / 3); }

int scores[3]; 이라는 코드는 int 자료형을 가지는 크기 3의 배열을 scores 라는 이름으로 생성하겠다는 의미입니다.

배열의 인덱스는 0부터 시작하기 때문에, scores의 인덱스는 0, 1, 2 세 개가 있습니다.

이 인덱스를 변수명 뒤 대괄호 [ ] 사이에 입력하여 배열의 원하는 위치에 원하는 값을 저장하고 불러올 수 있습니다.

하지만 위와 같은 코드는 여전히 점수의 개수가 바뀌는 상황에서 제약이 많습니다.

다음 강의에서는 배열을 보다 동적으로 선언하고 저장하는 방법을 알아보겠습니다.



생각해보기


실생활의 어떤 데이터를 배열로 표현할 수 있을까요?

 

나의 생각: 성적표, 매점 구매목록?

 

출처 :https://www.boostcourse.org/cs112/lecture/119014?isDesc=false 네이버커넥트재단

'컴퓨터공학 > 배열' 카테고리의 다른 글

문자열과 배열  (0) 2021.09.15
배열2  (0) 2021.09.15
코드의 디자인  (0) 2021.09.15
디버깅  (0) 2021.09.15
컴파일링  (0) 2021.09.15