An array in C Programing Language can be defined as number of memory
locations, each of which can store the same data type and which can be
references through the same variable name.
An array is a collective name given to a group of similar quantities.
These similar quantities could be percentage marks of 100 students,
number of chairs in home, or salaries of 300 employees or ages of 25
students. Thus an array is a collection of similar elements. These
similar elements could be all integers or all floats or all characters
etc. Usually, the array of characters is called a “string”, where as an
array of integers or floats is called simply an array. All elements of
any given array must be of the same type i.e we can’t have an array of
10 numbers, of which 5 are ints and 5 are floats.
Arrays and pointers have a special relationship as arrays use pointers to reference memory locations.
Declaration of an Array
Arrays must be declared before they can be used in the program. Standard array declaration is as
type variable_name[lengthofarray];
Here type specifies the variable type of the element which is going
to be stored in the array. In C programmin language we can declare the
array of any basic standard type which C language supports. For example
double height[10];
float width[20];
int min[9];
char name[20];
In C Language, arrays starts at position 0. The elements of the array
occupy adjacent locations in memory. C Language treats the name of the
array as if it were a pointer to the first element This is important in
understanding how to do arithmetic with arrays. Any item in the array
can be accessed through its index, and it can be accesed any where from
with in the program. So
m=height[0];
variable m will have the value of first item of array height.
The program below will declare an array of five integers and print all the elements of the array.
int myArray [5] = {1,2,3,4,5};
/* To print all the elements of the array
for (int i=0;i<5;i++){
printf("%d", myArray[i]);
}
Initializing Arrays
Initializing of array is very simple in c programming. The
initializing values are enclosed within the curly braces in the
declaration and placed following an equal sign after the array name.
Here is an example which declares and initializes an array of five
elements of type int. Array can also be initialized after declaration.
Look at the following C code which demonstrate the declaration andÂ
initialization of an array.
int myArray[5] = {1, 2, 3, 4, 5}; //declare and initialize the array in one statement
int studentAge[4];
studentAge[0]=14;
studentAge[1]=13;
studentAge[2]=15;
studentAge[3]=16;
Performing operations on Arrays
Here is a program that will demonstrate the simple operations of the array.
#include <stdio.h>
void oneWay(void);
void anotherWay(void);
int main(void) {
printf("\noneWay:\n");
oneWay();
printf("\nantherWay:\n");
anotherWay();
}
/*Array initialized with aggregate */
void oneWay(void) {
int vect[10] = {1,2,3,4,5,6,7,8,9,0};
int i;
for (i=0; i<10; i++){
printf("i = %2d vect[i] = %2d\n", i, vect[i]);
}
}
/*Array initialized with loop */
void anotherWay(void) {
int vect[10];
int i;
for (i=0; i<10; i++)
vect[i] = i+1;
for (i=0; i<10; i++)
printf("i = %2d vect[i] = %2d\n", i, vect[i]);
}
/* The output of this program is
oneWay:
i = 0 vect[i] = 1
i = 1 vect[i] = 2
i = 2 vect[i] = 3
i = 3 vect[i] = 4
i = 4 vect[i] = 5
i = 5 vect[i] = 6
i = 6 vect[i] = 7
i = 7 vect[i] = 8
i = 8 vect[i] = 9
i = 9 vect[i] = 0
antherWay:
i = 0 vect[i] = 1
i = 1 vect[i] = 2
i = 2 vect[i] = 3
i = 3 vect[i] = 4
i = 4 vect[i] = 5
i = 5 vect[i] = 6
i = 6 vect[i] = 7
i = 7 vect[i] = 8
i = 8 vect[i] = 9
i = 9 vect[i] = 10
*/
Here is a more complex program that will demonstrate how to read, write and traverse the integer arrays
#include <stdio.h>
void intSwap(int *x, int *y);
int getIntArray(int a[], int nmax, int sentinel);
void printIntArray(int a[], int n);
void reverseIntArray(int a[], int n);
int main(void) {
int x[10];
int hmny;
hmny = getIntArray(x, 10, 0);
printf("The array was: \n");
printIntArray(x,hmny);
reverseIntArray(x,hmny);
printf("after reverse it is:\n");
printIntArray(x,hmny);
}
void intSwap(int *x, int *y)
/* It swaps the content of x and y */
{
int temp = *x;
*x = *y;
*y = temp;
}
/* n is the number of elements in the array a.
* These values are printed out, five per line. */
void printIntArray(int a[], int n){
int i;
for (i=0; i<n; ){
printf("\t%d ", a[i++]);
if (i%5==0)
printf("\n");
}
printf("\n");
}
/* It reads up to nmax integers and stores then in a; sentinel
* terminates input. */
int getIntArray(int a[], int nmax, int sentinel)
{
int n = 0;
int temp;
do {
printf("Enter integer [%d to terminate] : ", sentinel);
scanf("%d", &temp);
if (temp==sentinel) break;
if (n==nmax)
printf("array is full\n");
else
a[n++] = temp;
}while (1);
return n;
}
/* It reverse the order of the first n elements of array */
void reverseIntArray(int a[], int n)
{
int i;
for(i=0;i<n/2;i++){
intSwap(&a[i],&a[n-i-1]);
}
}
Copy one array into another
There is no such statement in C language which can directly copy an
array into another array. So we have to copy each item seperately into
another array.
#include <stdio.h>
int main()
{
int iMarks[4];
short newMarks[4];
iMarks[0]=78;
iMarks[1]=64;
iMarks[2]=66;
iMarks[3]=74;
for(i=0; i<4; i++)
newMarks[i]=iMarks[i];
for(j=0; j<4; j++)
printf("%d\n", newMarks[j]);
return 0;
}
To summarize, arrays are provides a simple mechanism where more than
one elements of same type are to be used. We can maintain, manipulate
and store multiple elements of same type in one array variable and
access them through index.
Multidimensional Arrays
In C Language one can have arrays of any dimensions. To understand the concept
of multidimensional arrays let us consider the following 4 X 5 matrix
Row number (i) |
Column numbers (j) |
0 |
11 |
3 |
5 |
-9 |
-6 |
1 |
5 |
6 |
-8 |
7 |
24 |
2 |
-8 |
9 |
2 |
12 |
45 |
3 |
10 |
13 |
-10 |
4 |
5 |
Let us assume the name of matrix is x
To access a particular element from the array we have to use two
subscripts on for row number and other for column number the notation is
of the form X [i] [j] where i stands for row subscripts and j stands
for column subscripts. Thus X [0] [0] refers to 10, X [2] [1] refers to
16 and so on In short multi dimensional arrays are defined more or less
in the same manner as single dimensional arrays, except that for
subscripts you require two squire two square brackets. We will restrict
our decision to two dimensional arrays.
Below given are some typical two-dimensional array definitions
float table [50] [50];
char line [24] [40];
The first example defines tables as a floating point array having 50
rows and 50 columns. the number of elements will be 2500 (50 X50).
The second declaration example establishes an array line of type
character with 24 rows and 40 columns. The number of elements will be
(24 X 40) 1920 consider the following two dimensional array definition
int values [3] [4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10. 11, 12, };
Values [0] [0] = 1 Values [0] [1] = 2 Values [0] [2] = 3 Values [0] [3] = 4
Values [1] [0] = 5 Values [1] [1] = 6 Values [1] [2] = 7 Values [1] [3] = 8
Values [2] [0] = 9 Values [2] [1] = 10 Values [2] [2] = 11 Values [2] [3] = 12
Here the first subscript stands for the row number and second one for
column number. First subscript ranges from 0 to 2 and there are
altogether 3 rows second one ranges from 0 to 3 and there are altogether
4 columns.
Alternatively the above definition can be defined and initialised as
int values [3] [4] = {
{
1, 2, 3, 4
}
{
5, 6, 7, 8
}
{
9, 10, 11, 12
}
};
Here the values in first pair of braces are initialised to elements
of first row, the values of second pair of inner braces are assigned to
second row and so on. Note that outer pair of curly braces is required.
If there are two few values within a pair of braces the remaining
elements will be assigned as zeros.
Here is a sample program that stores roll numbers and marks obtained by a student side by side in matrix
main ( )
{
int stud [4] [2];
int i, j;
for (i =0; i < =3; i ++)
{
printf ("\n Enter roll no. and marks");
scanf ("%d%d", &stud [i] [0], &stud [i] [1] );
}
for (i = 0; i < = 3; i ++)
printf ("\n %d %d", stud [i] [0], stud [i] [1]);
}
The above example illustrates how a two dimensional array can be read
and how the values stored in the array can be displayed on screen.