Arrays in C
Arrays in C
UNIT -3:
CHAPTER 7: ARRAYS
Dynamic Arrays
CHAPTER 8: Strings
What is Array?
C programming language provides a data structure called the array, which
can store a fixed-size sequential collection of elements of the same type.
An array is used to store a collection of data, but it is often more useful to
think of an array as a collection of variables of the same type.
Instead of declaring individual variables, such as number0, number1, ...,
and number99, you declare one array variable such as numbers and use
numbers[0], numbers[1], and ..., numbers[99] to represent individual
variables. A specific element in an array is accessed by an index.
All arrays consist of contiguous memory locations. The lowest address
corresponds to the first element and the highest address to the last
element.
int anArrayName[10];
double balance[10];
You can initialize array in C either one by one or using a single statement
as follows:
The number of values between braces { } can not be larger than the
number of elements that we declare for the array between square
brackets [ ]. Following is an example to assign a single element of the
array:
o If you omit the size of the array, an array just big enough to hold the
initialization is created. Therefore, if you write:
o You will create exactly the same array as you did in the previous
example.
balance[4] = 50.0;
The above statement assigns element number 5th in the array a value
of 50.0. Array with 4th index will be 5th i.e. last element because all
arrays have 0 as the index of their first element which is also called
base index. Following is the pictorial representation of the same array
we discussed above:
The above statement will take 10th element from the array and assign the
value to salary variable.
Following is an example which will use all the above mentioned three
concepts viz. declaration, assignment and accessing arrays:
#include <stdio.h>
int main ()
{
int n[ 10 ]; /* n is an array of 10 integers */
int i,j;
/* initialize elements of array n to 0 */
for ( i = 0; i < 10; i++ )
{
n[ i ] = i + 100; /* set element at location i to i + 100 */
}
/* output each array element's value */
for (j = 0; j < 10; j++ )
{
printf("Element[%d] = %d\n", j, n[j] );
}
return 0;
}
Element[0] = 100
Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109
Two-Dimensional Arrays
type arrayName [ x ][ y ];
Where type can be any valid C data type and arrayName will be a valid C
identifier. A two dimensional array can be think as a table which will have
x number of rows and y number of columns. A 2-dimentional array a,
which contains three rows and four columns can be shown as below:
form a[ i ][ j ], where a is the name of the array, and i and j are the
};
The nested braces, which indicate the intended row, are optional. The
following initialization is equivalent to previous example:
The above statement will take 4th element from the 3rd row of the array.
You can verify it in the above diagram. Let us check below program where
we have used nested loop to handle a two dimensional array:
#include <stdio.h>
int main ()
{
/* an array with 5 rows and 2 columns*/
int a[5][2] = { {0,0}, {1,2}, {2,4}, {3,6},{4,8}};
int i, j;
/* output each array element's value */
for ( i = 0; i < 5; i++ )
{
for ( j = 0; j < 2; j++ )
{
printf("a[%d][%d] = %d\n", i,j, a[i][j] );
}
}
return 0;
}
a[0][0]: 0
a[0][1]: 0
a[1][0]: 1
a[1][1]: 2
a[2][0]: 2
a[2][1]: 4
a[3][0]: 3
a[3][1]: 6
a[4][0]: 4
a[4][1]: 8
As explained above, you can have arrays with any number of dimensions,
although it is likely that most of the arrays you create will be of one or
two dimensions.
Multi-dimensional Arrays
type name[size1][size2]...[sizeN];
For example, the following declaration creates a three dimensional 2 , 3, 2
integer array:
int test[2][3][2];
Example C program for multi dimensional array,
// C Program to store and print 12 values entered by the user
#include <stdio.h>
int main()
{
int test[2][3][2];
printf("Enter 12 values: \n");
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
for (int k = 0; k < 2; ++k)
{ scanf("%d", &test[i][j][k]); }
}
}
// Printing values with proper index.
printf("\nDisplaying values:\n");
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
for (int k = 0; k < 2; ++k)
{
printf("test[%d][%d][%d] = %d\n", i, j, k, test[i][j][k]);
}
}
}
return 0;
}
When the above code is compiled and executed, it produces the
following result
Enter 12 values:
1
2
3
4
5
6
7
8
9
10
11
12
Displaying Values:
test[0][0][0] = 1
test[0][0][1] = 2
test[0][1][0] = 3
test[0][1][1] = 4
test[0][2][0] = 5
test[0][2][1] = 6
test[1][0][0] = 7
test[1][0][1] = 8
test[1][1][0] = 9
test[1][1][1] = 10
test[1][2][0] = 11
test[1][2][1] = 12
Dynamic Arrays