메모리
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
'CSE > CS50' 카테고리의 다른 글
[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에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!