Array in C/C++
Arrays
In
C language, arrays are referred to as structured data types. An array is
defined as finite ordered collection of homogenous data, stored in contiguous
memory locations.
Here
the words,
- finite means data range must be defined.
- ordered means data must be stored in continuous memory addresses.
- homogenous means data must be of similar data type.
Example
where arrays are used,
- to store list of Employee or Student names,
- to store marks of a students,
- or to store list of numbers or characters etc.
Since
arrays provide an easy way to represent data, it is classified amongst the data
structures in C. Other data structures in c are structure, lists, queues, trees
etc. Array can be used to represent not only simple list of data but also table
of data in two or three dimensions.
Declaring
an Array
Like
any other variable, arrays must be declared before they are used. General form
of array declaration is,
data-type
variable-name[size];
for
example :
int
arr[10];
Here
int is the data type, arr is the name of the array and 10 is the size of array.
It means array arrcan only contain 10 elements of int type. Index of an array
starts from 0 to size-1 i.e first element of arr array will be stored at arr[0]
address and last element will occupy arr[9].
Initialization
of an Array
After
an array is declared it must be initialized. Otherwise, it will contain garbage
value(any random value). An array can be initialized at either compile time or
at runtime.
Compile
time Array initialization
Compile
time initialization of array elements is same as ordinary variable
initialization. The general form of initialization of array is,
typearray-name[size]
= { list of values };
int
marks[4]={ 67, 87, 56, 77 }; //integer
array initialization
float
area[5]={ 23.4, 6.8, 5.5 }; //float
array initialization
int
marks[4]={ 67, 87, 56, 77, 59 };
//Compile time error
One
important thing to remember is that when you will give more initializer (array
elements) than declared array size than the compiler will give an error.
#include<stdio.h>
#include<conio.h>
void main()
{
int i;
int arr[]={5,10,15}; //Compile time array initialization
clrscr();
for(i=0 ; i<3 ; i++)
{
printf("%d\t",arr[i]);
}
getch();
}
Output
5 10 15
Runtime
Array initialization
An
array can also be initialized at runtime using scanf() function. This approach
is usually used for initializing large array, or to initialize array with user
specified values. Example,
#include<stdio.h>
#include<conio.h>
void main()
{
int arr[4];
int i, j;
clrscr();
printf("Enter array
element");
for(i=0;i<4;i++)
{
scanf("%d",&arr[i]); //Run time array initialization
}
for(j=0;j<4;j++)
{
printf("%d\n",arr[j]);
}
getch();
}
Two
dimensional Arrays
C
language supports multidimensional arrays. The simplest form of the multidimensional
array is the two-dimensional array. Both the row's and column's index begin
from 0.
Two-dimensional
array is declared as follows,
type
array-name[row-size][column-size]
Example
:
int
a[3][4];
An
array can also be declared and initialized together. For example,
intarr[][3]
= {
{0,0,0},
{1,1,1}
};
Note:
We have not assigned any row value. It means we can initialize any number of
rows. But, we must always specify number of columns, else it will give a
compile time error. Here, a 2*3 multi-dimensional matrix is created.
Run-time
initialization of two dimensional Array
#include<stdio.h>
#include<conio.h>
void main()
{
int arr[3][4];
int i, j, k;
clrscr();
printf("Enter array
element");
for(i=0;i<3;i++)
{
for(j=0; j < 4; j++)
{
scanf("%d",&arr[i][j]);
}
}
for(i=0; i < 3; i++)
{
for(j=0; j < 4; j++)
{
printf("%d",arr[i][j]);
}
}
getch();
}
String
and Character array
string
is a sequence of characters that is treated as a single data item and
terminated by null character '\0'. Remember that C language does not support
strings as a data type. A string is actually one-dimensional array of
characters in C language. These are often used to create meaningful and
readable programs.
For
example : The string "hello world" contains 12 characters including
'\0' character which is automatically added by the compiler at the end of the
string.
Declaring
and Initializing a string variables
There
are different ways to initialize a character array variable.
char
name[13]="Welcometorajkot";
//valid character array initialization
char
name[10]={'L','e','s','s','o','n','s','\0'};
//valid initialization
Remember
that when you initialize a character array by listings all its characters
separately then you must supply the '\0' character explicitly.
Some
examples of illegal initialization of character array are,
charch[3]="hell"; //Illegal
charstr[4];
str="hell"; //Illegal
String
Input and Output
Input
function scanf() can be used with %s format specifier to read a string input
from the terminal. But there is one problem with scanf() function, it terminates
its input on first white space it encounters. Therefore if you try to read an
input string "Hello World" using scanf() function, it will only read
Hello and terminate after encountering white spaces.
However,
C supports a format specification known as the edit set conversion code %[..]
that can be used to read a line containing a variety of characters, including
white spaces.
#include<stdio.h>
#include<conio.h>
#include<string.h>
void
main()
{
char str[20];
clrscr();
printf("Enter a
string");
scanf("%[^\n]",&str);
//scanning the whole string, including the white spaces
printf("%s",str);
getch();
}
Another
method to read character string with white spaces from terminal is gets()
function.
char
text[20];
gets(text);
printf("%s",text);
Comments
Post a Comment