0% found this document useful (0 votes)
34 views

Arrays in C

Uploaded by

Lena Devaraj
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
34 views

Arrays in C

Uploaded by

Lena Devaraj
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

7BCE 1C1 – PROGRAMMING IN C

UNIT -3:
CHAPTER 7: ARRAYS

 One Dimensional Arrays

 Declaration of One Dimensional Arrays

 Initialization of One Dimensional Arrays

 Two Dimensional Arrays

 Multi Dimensional Arrays

 Dynamic Arrays

CHAPTER 8: Strings

 Declaring and Initializing String Variables

 Reading Strings from Terminal

 Writing Strings to Screen

 String Handling Functions


CHAPTER 7: ARRAYS

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.

One Dimensional Arrays

 A one-dimensional array (or single dimension array) is a type of linear


array. Accessing its elements involves a single subscript which can either
represent a row or column index.
 As an example consider the C declaration

int anArrayName[10];

 which declares a one-dimensional array of ten integers. Here, the array


can store ten elements of type int . This array has indices starting from
zero through nine.
 For example, the xpressions anArrayName[0] and anArrayName[9] are
the first and last elements respectively.

Declaration of One Dimensional Arrays

 To declare an array in C, a programmer specifies the type of the elements


and the number of elements required by an array as follows:

type arrayName [ arraySize ];

 This is called a single-dimensional array. The arraySize must be an


integer constant greater than zero and type can be any valid C data type.
For example, to declare a 10 element array called balance of type double,
use this statement:

double balance[10];

 Now balance is a variable array which is sufficient to hold up-to 10 double


numbers.
 Rules for Declaring One Dimensional Array:
o An array variable must be declared before being used in a program.
o The declaration must have a data type (int, float, char, double, etc.),
array name, and subscript.
o The subscript represents the size of the array. If the size is declared
as 10, programmers can store 10 elements.
o An array index always starts from 0. For example, if an array
variable is declared as s[10], then it ranges from 0 to 9.
o Each array element stored in a separate memory location.
Initialization of One Dimensional Arrays

 You can initialize array in C either one by one or using a single statement
as follows:

double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};

 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:

double balance[] = {1000.0, 2.0, 3.4, 17.0, 50.0};

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:

Accessing Array Elements

 An element is accessed by indexing the array name. This is done by


placing the index of the element within square brackets after the name of
the array. For example:
double salary = balance[9];

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;
}

When the above code is compiled and executed, it produces the


following result:

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

 The simplest form of the multidimensional array is the two-dimensional


array. A twodimensional array is, in essence, a list of one-dimensional
arrays.
 To declare a twodimensional integer array of size x, y you would write
something as follows:

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:

 Thus, every element in array a is identified by an element name of the

form a[ i ][ j ], where a is the name of the array, and i and j are the

subscripts that uniquely identify each element in a.


Initializing Two-Dimensional Arrays

 Two dimensional arrays may be initialized by specifying bracketed values


for each row. Following is an array with 3 rows and each row has 4
columns.

int a[3][4] = { {0, 1, 2, 3} , /* initializers for row indexed by 0 */

{4, 5, 6, 7} , /* initializers for row indexed by 1 */

{8, 9, 10, 11} /*initializers for row indexed by 2 */

};

 The nested braces, which indicate the intended row, are optional. The
following initialization is equivalent to previous example:

int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};

Accessing Two-Dimensional Array Elements

 An element in 2-dimensional array is accessed by using the subscripts, i.e.,


row index and column index of the array. For example:

int val = a[2][3];

 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;
}

When the above code is compiled and executed, it produces the


following result:

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

 In C programming, you can create an array of arrays. These arrays are


known as multidimensional arrays. Here is the general form of a
multidimensional array declaration:

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

 As you know, an array is a collection of a fixed number of values. Once the


size of an array is declared, you cannot change it.
 An array created at compile time by specifying size in the source code has
a fixed size and cannot be modified at run time. The process of allocating
memory at compile time is known as static memory allocation and the
array is called as static array.
 Sometimes the size of the array you declared may be insufficient. To solve
this issue, you can allocate memory manually during run-time. This is
known as dynamic memory allocation in C programming. The memory of
an array allocated at run time is called dynamic memory allocation and
that type of array is called as dynamic array.
 To allocate memory dynamically, using pointer variables or using
library functions are malloc(), calloc(), realloc() and free() are used.
These functions are defined in the <stdlib.h> header file.

You might also like