BCSC 1204 - Lecture 2
BCSC 1204 - Lecture 2
Arrays are defined as the collection of similar type of data items stored at contiguous
memory locations.
Arrays are the derived data type in C programming language which can store the primitive
type of data such as int, char, double, float, etc.
Array is the simplest data structure where each data element can be randomly accessed by
using its index number.
For example, if we want to store the marks of a student in 6 subjects, then we don't need to
define different variable for the marks in different subject. instead of that, we can define an
array which can store the marks in each subject at a the contiguous memory locations.
The array marks[10] defines the marks of the student in 10 different subjects where each
subject marks are located at a particular subscript in the array i.e. marks[0] denotes the
marks in first subject, marks[1] denotes the marks in 2nd subject and so on.
Each element is of same data type and carries a same size i.e. int = 4 bytes.
Elements of the array are stored at contiguous memory locations where the first element is
stored at the smallest memory location.
Elements of the array can be randomly accessed since we can calculate the address of each
element of the array with the given base address and the size of data element.
Example, in C language, the syntax of declaring an array is like following:
int arr[10];
char arr[10];
float arr[5];
In computer programming, the most of the cases requires to store the large number of data
of similar type. To store such amount of data, we need to define a large number of variables.
It would be very difficult to remember names of all the variables while writing the programs.
Instead of naming all the variables with a different name, it is better to define an array and
store all the elements into it.
In the following example, we have marks of a student in six different subjects. The problem
intends to calculate the average of all the marks of the student.
In order to illustrate the importance of array, we have created two programs, one is without
using array and other involves the use of array to store marks.
Time and space complexity of various array operations are described in the following table.
Time Complexity
Array provides the single name for the group of variables of the same type therefore, it is
easy to remember the name of all the elements of an array.
Traversing an array is a very simple process, we just need to increment the base address of
the array in order to visit each element one by one.
Any element in the array can be directly accessed by using the index.
As we have mentioned, all the data elements of an array are stored at contiguous locations in
the main memory. The name of the array represents the base address or the address of first
element in the main memory. Each element of the array is represented by a proper indexing.
The indexing of the array can be defined in three ways.
o 0 (zero - based indexing) : The first element of the array will be arr[0].
o 1 (one - based indexing) : The first element of the array will be arr[1].
o n (n - based indexing) : The first element of the array can reside at any random index
number.
In the following image, we have shown the memory allocation of an array arr of size 5. The
array follows 0-based indexing approach. The base address of the array is 100th byte. This will
be the address of arr[0]. Here, the size of int is 4 bytes therefore each element will take 4 bytes
in the memory.
Address of any element of a 1D array can be calculated by using the following formula:
Byte address of element A[i] = base address + size * ( i - first index)
Due to the fact that the elements of 2D arrays can be random accessed. Similar to one
dimensional arrays, we can access the individual cells in a 2D array by using the indices of the
cells. There are two indices attached to a particular cell, one is its row number while the
other is its column number.
However, we can store the value stored in any particular cell of a 2D array to some variable x
by using the following syntax.
int x = a[i][j];
where i and j is the row and column number of the cell respectively.
We know that, when we declare and initialize one dimensional array in C programming
simultaneously, we don't need to specify the size of the array.
However this will not work with 2D arrays. We will have to define at least the second
dimension of the array.
The syntax to declare and initialize the 2D array is given as follows.
int arr[2][2] = {0,1,2,3};
The number of elements that can be present in a 2D array will always be equal to (number of
rows * number of columns).