cs50 3강 4-5세션 배열
배열이란
메모리상에 연속선상으로 놓여있는 자료물이다.
연속선상
이라는 키워드는 배열을 설명할 때에 상당히 중요한데, 그 이유는 c언어에서 포인터로 배열을 읽어올 때 배열의 이름 만으로도 배열의 시작점이 되는 주소값을 읽어올 수 있는 이유가 바로 여기에 있기 때문이다.
우선 우리는 배열을 메모리사엥 연속선상으로 놓여있으며
이 안에 담겨있는 여러 개의 내용물들을 하나의 변수로 사용하기 위헤
선언한다고 이해하면 된다.
제로 인덱스
배열의 첫 시작점은 0부터이다.
즉 배열의 첫번째 자료는 1
번째 자료가 아닌 0
번째 자료이므로 arr[0]
에서 찾아야한다.
배열의 선언법
int arr[배열의 크기];
int arr[번째]=넣고자하는 정수;
이런식으로 직접 집어넣는 것도 가능하며, scanf_s
를 통해 배열에 사용자가 원하는 숫자를 집어넣는 것도 중요하다.
그러나 우리가 지금 배운 방식으로 배열을 관리하면, arr의 크기를 바꾸게 되었을 때에 몇몇가지 문제를 야기할 수도 있다.
예를 들어 arr의 크기를 작게 하고싶어서 앞쪽에만 자료를 집어넣으면 뒷쪽 메모리는 비어있게 되기 때문에 불필요한 메모리를 사용하는 것이나 마찬가지가 된다.
배열을 전역에 선언하면
c언어에서 지역변수는 원칙적으로 사용하기 이전에 꼭 한번 초기화를 해주는 작업을 하여야한다.
그러나, 배열을 전역 변수에 선언을 하면 알아서 배열의 크기만큼 0으로 초기화값이 설정되기 때문에 그럴 필요가 없어진다.
동적으로 크기 조절하기
배열의 크기를 사용자에게 입력받는 방식으로 하면 배열의 크기를 훨씬 경제적으로 쓸 수 있다.
메모리를 지나치게 크게 잡아서 노는 메모리가 생길 확률도 사라지며, 메모리가 작아 제대로된 값을 불러오지 못하는 오류를 일으킬 가능성도 없어지기 때문이다.
사용자에게 입력받기
c언어에서는 scanf_s를 통해 사용자 입력을 받으나 cs50라이브러리에서는 get_자료형()
을 통해 입력을 받는 것을 주의한다.
배열 탐색하기
배열은 메모리 상에 연속선상으로 놓여있으므로 for문을 통해 0번째부터 배열의 사이즈만큼 탐색하면 배열 전체의 내용을 탐색할 수 있다.
댓글남기기