![[CS50] 배열 - 배열(1)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnGrj2%2FbtsHXujX6Y0%2Fyqtw3F46GOSH2FU8iLaTE0%2Fimg.jpg)
메모리
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 세 개가 있다.
이 인덱스를 변수명 뒤 대괄호 [ ]
사이에 입력해 배열의 원하는 위치에 원하는 값을 저장하고 불러올 수 있다.
하지만 위와 같은 코드는 여전히 점수의 개수가 바뀌는 상황에서 제약이 많다.
다음 배열(2) 에서는 배열을 보다 동적으로 선언하고 저장하는 방법을 알아보겠다.
References
모두를 위한 컴퓨터 과학 (CS50 2019)
부스트코스 무료 강의
www.boostcourse.org
'CSE > CS 기초' 카테고리의 다른 글
[CS50] 배열 - 문자열과 배열 (0) | 2024.06.13 |
---|---|
[CS50] 배열 - 배열(2) (1) | 2024.06.13 |
[CS50] 배열 - 디버깅 (0) | 2024.06.13 |
[CS50] 배열 - 컴파일링 (1) | 2024.06.12 |
[CS50] C언어 - 하드웨어의 한계 (0) | 2024.06.12 |
컴퓨터 전공 관련, 프론트엔드 개발 지식들을 공유합니다. React, Javascript를 다룰 줄 알며 요즘에는 Typescript에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!