array
고정된 데이터 크기
연속된 데이터
선언된 배열에는 데이터가 저장된 메모리의 맨 첫번째 주소를 가지고 있게 된다.
배열의 타입에 따라서, 다음 데이터의 시작 위치를 알 수 있다.
int arr[5] = {1,3,4,6,8}
일때 arr[1]
을 꺼낸다고 하면, int 자료형은 4byte이므로, arr에 저장된 주소에서 4byte만큼의 크기만큼 더해서 그곳에서 4byte 만큼의 자료를 꺼내오게 된다. 그 값이 바로 3이된다.
RandomAccess
메모리에 저장된 데이터에 접근하기 위해서는 주소값을 알아야 한다. 배열 변수는 자신이 할당받은 메모리의 첫 번째 주소깂을 가진다. 배열은 연속적/순자척으로 저장되어있기 때문에, 첫 주소값만 알고 있다면 어떤 인덱스에서 즉시 접근이 가능하다. 이를 Direct Access 또는 Random Access라고 부른다. 배열의 경우 아무리 긴 배열이더라도 한 번의 연산으로 원하는 데이터에 바로 접근이 가능하다. 시간 복잡도가 그래서 O(1)이다
한계
선언시에 정한 size보다 많은 데이터를 저장해야 하는 경우 공간이 남아있지 않아서 문제가 발생할 수 있다. 그렇다고 크기가 엄청 큰 배열을 선언하면 그만큼 메모리를 많이 차지한다. 이런 문제점을 해결할 수 있는 것이 바로 dynamic array다
Uploaded by N2T