CS 1001 Programming in C
Lecture 5
Arrays
s
s
Arrays in Action
are 2D arrays (matrices) of numbers:
Array
An array is a set of variables,
represented by a single name.
The individual variables are called
elements and are identified by index
numbers.
The following example declares an
array with ten elements.
int buf[10];
Indexing
The first element in the array has an
index number of zero.
Therefore, the array buf has ten
elements, indexed from zero to nine.
buf[0]
buf[1]
.
.
buf[9]
Accessing the Elements
To access an individual element in the
array, the index number follows the
variable name in square brackets.
The variable can then be treated like
any other variable in C.
The following example assigns a value
6 to the first element in the array buf.
buf[0] = 16;
Reading and writing in an Array
The example prints the value of the
third element in array buf.
printf("%d\n", buf[2]);
The example uses the scanf function to
read a value from the keyboard into the
last element of array buf.
scanf("%d", &x[9]);
Initializing Array Elements
Arrays can be initialized like any other
variables by assignment.
As an array contains more than one
value, the individual values are placed
in curly braces, and separated with
commas.
The example initializes a ten
dimensional array with the first ten
values of the three times table.
int x[10] = {3, 6, 9, 12, 15, 18, 21, 24, 27, 30};
Looping through an Array
As the array is indexed sequentially, we
can use the for loop to display all the
values of an array.
The example displays all the values of
an array.
Example
#include<stdio.h>
void main (void)
{
int x[10]={3,6,9,12,15,18,21,24,27,30};
int i;
for(i=0; i<10; i++)
printf("x[%d] = %2d\n", i, x[i]);
}
Assignment
This saves assigning the values individually
int x[10];
x[0] = 3;
x[1] = 6;
x[2] = 9;
x[3] = 12;
x[4] = 15;
x[5] = 18;
x[6] = 21;
x[7] = 24;
x[8] = 27;
x[9] = 30;
Example
The program reads a line, stores it in a
buffer, and prints its length (excluding
the newline at the end).
void main(void )
{
int n, c;
char line[100];
n = 0;
while( (c=getchar( )) != '\n' ) {
if( n < 100 )
line[n] = c;
n++;
}
printf("length = %d\n", n);
}
Working with Arrays
Example: adds up the elements of an
array:
int array[5]={2, 3, 4, 5,2}
int sum = 0;
for( i=0; i<5; i++)
sum = sum + array[i];
Arrays of Different Types
int ID[30];
/* Could be used to store
the ID numbers of students in a class */
float temperatures[31];
/* Could be used to store the
daily temperatures in a month */
char name[20];
/* Could be used to store a
character string*/
Multidimensional Arrays
An array can have more than one
dimension.
By allowing the array to have more than
one dimension provides greater
flexibility.
Spreadsheets are built on a two
dimensional array; an array for the
rows, and an array for the columns.
Example
The example uses a two dimensional
array with two rows, each containing
five columns.
#include <stdio.h>
void main()
{
/* Declare a 2 x 5 multidimensional array */
int x[2][5] = { {1, 2, 3, 4, 5},
{2, 4, 6, 8, 10} };
int row, column;
for (row=0; row<2; row++)
{
for (column=0; column<5; column++)
printf("%d\t", x[row][column]);
putchar('\n');
}
}
Storage in Memory
Since computer memory is essentially
one-dimensional, with memory
locations running straight from 0 up
through the highest location in
memory.
A multidimensional array cannot be
stored in memory as a grid. Instead, the
array is dissected and stored in rows.
Consider the two-dimensional array.
Storage
---------
row 0 | 1 | 2 | 3 |
---------
row 1 | 4 | 5 | 6 |
---------
row 2 | 7 | 8 | 9 |
---------
To the computer, the array above actually "looks" like this:
--------------------------
|1|2|3|4|5|6|7|8|9|
--------------------------
| row 0 | row 1 | row 2 |