[CS50] Array - 배열

배정규·2021년 1월 25일
1

cs50

목록 보기
6/14

배열

학습 목표

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

핵심 단어

  • 배열
  • 전역 변수

메모리

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

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

컴퓨터 안에는 아래 사진과 같은 RAM이라고 하는 물리적 칩이 메모리 역할을 한다.
쉽게 생각하면 아래 사진에서 여러 개의 노란색 사각형이 메모리를 의미하고, 작은 사각형 하나가 1바이트를 의미한다고 볼 수 있다.

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

배열

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

int scores[3] 이라는 코드는 int 자료형을 가지는 크기 3의 배열을 scores라는 이름으로 생성하겠다는 의미이다.
배열의 인덱스는 0부터 시작하기 때문에, scores의 인덱스는 0, 1, 2 세 개가 있다.
이 인덱스를 변수명 뒤 대괄호 [] 사이에 입력하여 배열의 원하는 위치에 원하는 값을 저장하고 불러올 수 있다.

전역 변수

아래 코드에서 scores 배열의 크기를 정해주는 N이라는 변수를 새로 선언하였다.
만약 N이 고정된 값(상수)이라면 그 값을 선언할 때 const 를 앞에 붙여서 전역 변수, 즉 코드 전반에 거쳐 바뀌지 않는 값임을 지정해줄 수 있다.

배열의 동적 선언 및 저장

아래 코드에서와 같이 루프와 함수를 선언하여 좀 더 동적인 프로그램을 작성할 수 있다.

여기서는 배열의 크기를 사용자에게 직접 입력 받고 배열의 크기만큼 루프를 돌면서 각 인덱스에 해당하는 값을 역시 사용자에게 동적으로 입력 받아 저장한다.
그리고 average 라는 함수를 따로 선언하여 평균을 구한다.

avergage 함수는 length와 array[], 즉 배열의 길이와 배열을 입력 받는다. 함수 안에서는 배열의 길이만큼 루프를 돌면서 값의 합을 구하고 최종적으로 평균값을 반환한다.

profile
Seize the day

0개의 댓글