Arrays are available in most programming languages because they realise the simplest organisation of complex data structures.
Declaration and allocation
Let us begin with some definitions that are a little more formal but which will be useful to fix the essential concepts.
Definition An array is a data structure that allows sequences of data of the same type to be represented. The elements that make up an array can be found by specifying their position.
T[] var = new T[n];
defines an array of name var and type T of n elements, the elements of the array are
var[0], var[1], ... , var[n-1]
n also called the size or length of the array;
initialisation of elements at the same time as definition is also possible
T[] var = {values_0,value_1, ... ,value_n}
Hence, we have the values of the individual elements equal to
var[0] = value_0 ;var[1] = value_1 ;...var[n] = value_n ;
Otherwise, the declaration may take place in 2 stages
T[] var; var = new T[n] ;
or
var = new T[] { value_0,value_1, ..., value_n }
each element of the array can be used in the same way as a variable
given the array var { value_0,value_1, … , value_n }
var[0] = value_0 ; var[1] = value_1 ;
I can modify the second element of the array, i.e. var[1] with value new_value_1 with the instruction
var[1] = new_value_1 ;
transforming var into { value_0,new_value_1, … , value_n }
I can assign to a variable x of type compatible with T the i-th value of var simply like this
T x = var[i] ;
in this way x has the i-th value of the array var , obviously i must have a value between 0 and var.length - 1 representing the length of the array var.
Multidimensional arrays
The arrays seen so far are one-dimensional, i.e. they are linear sequences of data that are homogeneous and can be associated with a vector model. In reality, we can also have multidimensional arrays in which each element identified not by a single index but by a larger number of indexes.
for instance
T[][] var = new T[n][m];
the considerations made above for one-dimensional types apply, to initialise the position value or coordinate i,j I can write
var[i][j] = a_value ;
For smart initialisation, however, I can also do
T[][] var = { {value_0, value_1, ... , value_n} , { value_0, value_1, ... , value_m } }
