Arrays
Memory organization Table at right shows 16 bytes, each consisting of 8 bits Each byte has an address, shown in the column to the left
Arrays A collection of variables, all of the same type. Each variable in an array is accessed by an index. An array of size n has indices from 0 to n-1. An array occupies a contiguous block of memory. The size of an array is fixed, specified at creation.
Accessing an array member t type of elements in array s size (in bytes) of an element of type t b base address of array address of element i is b + i * s
Array access example In Java, an int occupies 4 bytes: int [] a = new int[5]; The base address of ‘a’ is Indices are 0, 1, 2, 3 and 4. Total size needed for array is 20 bytes (5 cells times 4 bytes per cell)
Array access example Where is a[0]? Address of a[0] is: b + s * i where b = , s = 4 and i = 0: * 0 = a[0] occupies bytes , , and a[0]
Array access example Where is a[3]? Address of a[3] is: b + s * i where b = , s = 4 and i = 3: * 3 = a[3] occupies bytes , , and a[3]
Array access example Where is a[7]? There is no such array cell, so what happens if we try to access it? In some languages (e.g. C and C++) the access is permitted, with unpredictable results. Java throws an ArrayIndexOutOfBoundsException