0% found this document useful (0 votes)
13 views7 pages

Array

The document provides an overview of arrays in C, detailing their types, declaration, initialization, and usage. It explains one-dimensional and multi-dimensional arrays, including syntax for declaring and initializing them, as well as important considerations like indexing and memory management. Sample programs illustrate how to work with arrays, including calculating Fibonacci numbers and adding multi-dimensional arrays.

Uploaded by

INDIAN TECHING
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)
13 views7 pages

Array

The document provides an overview of arrays in C, detailing their types, declaration, initialization, and usage. It explains one-dimensional and multi-dimensional arrays, including syntax for declaring and initializing them, as well as important considerations like indexing and memory management. Sample programs illustrate how to work with arrays, including calculating Fibonacci numbers and adding multi-dimensional arrays.

Uploaded by

INDIAN TECHING
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/ 7

Topic Name: Array Basic and Types, Array

Initialization and Declaration, Initialization: one


Dimensional Array
Overview
• An array is a collection of data items, all of the same type, accessed using a
common name.
• A one-dimensional array is like a list; A two dimensional array is like a
table; The C language places no limits on the number of dimensions in an array,
though specific implementations may.
• Some texts refer to one-dimensional arrays as vectors, two-dimensional arrays
as matrices, and use the general term arrays when the number of dimensions is
unspecified or unimportant.

Declaring Arrays
• Array variables are declared identically to variables of their data type, except that
the variable name is followed by one pair of square [ ] brackets for each
dimension of the array.
• Uninitialized arrays must have the dimensions of their rows, columns, etc. listed
within the square brackets.
• Dimensions used when declaring arrays in C must be positive integral constants
or constant expressions.

Examples:
int i, j, intArray[ 10 ], number;
float floatArray[ 1000 ];
int tableArray[ 3 ][ 5 ]; /* 3 rows by 5 columns */

const int NROWS = 100; // ( Old code would use #define


NROWS 100 )
const int NCOLS = 200; // ( Old code would use #define
NCOLS 200 )
float matrix[ NROWS ][ NCOLS ];
Declaring a (one-Dimensional ) Array
Syntax: elementtype arrayname [ size_expression ]

where

elementtype is any type that already exists


arrayname is the name of the array
size_expression is the number of elements in the array

This declares an array named arrayname whose elements will be of type elementtype
, and that has size_expression many elements.

Examples

char fname[24]; // an array named fname with 24

chars int grade[35]; // an array named grade with 35 ints

int pixel[1024*768]; // an array named pixel with 1024*768 ints

const int MAX_STUDENTS = 100;

double average[MAX_STUDENTS]; // an array named average with 100

doubles string fruit[5]; // an array of 5 C++ strings

The element type of an array is often called its base type. The first example is an
array with base type char, for example. One can say that fname is an array of char.

Things to remember about arrays:

• The starting index of an array is 0, not 1.


• The last index is one less than the size of the array.
• If the array has size elements, the range is 0..size-1.
• Arrays contain data of a single type.
• An array is a sequence of consecutive elements in memory and the start of the array
is the address of its first element.
• Because the starting address of the array in memory is the address of its first element,
and all elements are the same size and type, the compiler can calculate the locations
of the remaining elements. If B is the starting address of the array array,and each
element is 4 bytes long, the elements are at addresses B, B + 4, B + 8, B + 12, and
so on, and in general, element array[k] is at address B + 12k.
• Although C and C++ allow the size expression to be variable, you should not use a
variable, for reasons having to do with concepts of dynamic allocation and the
lifetime of variables.
• Use constants such as macro definitions or const ints as the sizes of arrays.

Initializing Arrays
• Arrays may be initialized when they are declared, just as any other variables.
• Place the initialization data in curly {} braces following the equals sign. Note
the use of commas in the examples below.
• An array may be partially initialized, by providing fewer data items than the
size of the array. The remaining array elements will be automatically
initialized to zero.
• If an array is to be completely initialized, the dimension of the array is not
required. The compiler will automatically size the array to fit the initialized
data. ( Variation: Multidimensional arrays - see below. )
• Examples:
int i = 5, intArray[ 6 ] = { 1, 2, 3, 4, 5, 6 }, k;
float sum = 0.0f, floatArray[ 100 ] = { 1.0f, 5.0f, 20.0f };
double piFractions[ ] = { 3.141592654, 1.570796327, 0.785398163 };

Designated Initializers:

• In C99 there is an alternate mechanism, that allows you to initialize


specific elements, not necessarily at the beginning.
• This method can be mixed in with traditional iniitalization
• For example:

int numbers[ 100 ] = { 1, 2, 3, [10] = 10, 11, 12, [60] =


50, [42] = 420 };
o In this example,the first three elements are initialized to 1, 2, and
3 respectively.
o Then element 10 ( the 11th element ) is initialized to 10
o The next two elements ( 12th and 13th ) are initialized to 11 and
12 respectively.
o Element number 60 ( the 61st ) is initialized to 50, and number 42
( the 43rd ) to 420.
▪ ( Note that the designated initializers do not need to appear
in order. )
o As with traditional methods, all uninitialized values are set to
zero.
o If the size of the array is not given, then the largest initialized
position determines the size of the array.

Using Arrays
• Elements of an array are accessed by specifying the index ( offset ) of the desired
element within square [ ] brackets after the array name.
• Array subscripts must be of integer type. ( int, long int, char, etc. )
• VERY IMPORTANT: Array indices start at zero in C, and go to one less than
the size of the array. For example, a five element array will have indices zero
through four. This is because the index in C is actually an offset from the
beginning of the array. ( The first element is at the beginning of the array, and
hence has zero offset. )
• Landmine: The most common mistake when working with arrays in C is
forgetting that indices start at zero and stop one less than the array size.
• Arrays are commonly used in conjunction with loops, in order to perform the
same calculations on all ( or some part ) of the data items in the array.

Sample Programs Using 1-D Arrays


• The first sample program uses loops and arrays to calculate the first twenty
Fibonacci numbers. Fibonacci numbers are used to determine the sample
points used in certain optimization methods.
/* Program to calculate the first 20 Fibonacci numbers. */

#include <stdlib.h>
#include <stdio.h>

int main( void ) {


int i, fibonacci[ 20 ];

fibonacci[ 0 ] = 0;
fibonacci[ 1 ] = 1;

for( i = 2; i < 20; i++ )


fibonacci[ i ] = fibonacci[ i - 2 ] + fibonacci[ i - 1
];

for( i = 0; i < 20; i++ )


printf( "Fibonacci[ %d ] = %f\n", i, fibonacci[ i ] );

} /* End of sample program to calculate Fibonacci numbers */

Exercise: What is the output of the following program:


/* Sample Program Using Arrays */

#include <stdlib.h>
#include <stdio.h>

int main( void ) {

int numbers[ 10 ];
int i, index = 2;

for( i = 0; i < 10; i++ )


numbers[ i ] = i * 10;

numbers[ 8 ] = 25;
numbers[ 5 ] = numbers[ 9 ] / 3;
numbers[ 4 ] += numbers[ 2 ] / numbers[ 1 ];
numbers[ index ] = 5;
++numbers[ index ];
numbers[ numbers[ index++ ] ] = 100;
numbers[ index ] = numbers[ numbers[ index + 1
] / 7 ]--;

for( index = 0; index < 10; index++ )


printf( "numbers[ %d ] = %d\n" index,
numbers[ index ] );

} /* End of second sample program */


Multidimensional Arrays
• Multi-dimensional arrays are declared by providing more than one set of square
[ ] brackets after the variable name in the declaration statement.
• One dimensional arrays do not require the dimension to be given if the array is
to be completely initialized. By analogy, multi-dimensional arrays do not
require the first dimension to be given if the array is to be completely
initialized. All dimensions after the first must be given in any case.
• For two dimensional arrays, the first dimension is commonly considered to be
the number of rows, and the second dimension the number of columns. We will
use this convention when discussing two dimensional arrays.
• Two dimensional arrays are considered by C/C++ to be an array of ( single
dimensional arrays ). For example, "int numbers[ 5 ][ 6 ]" would refer to a single
dimensional array of 5 elements, wherein each element is a single dimensional
array of 6 integers. By extension, "int numbers[ 12 ][ 5 ][ 6 ]" would refer to an
array of twelve elements, each of which is a two dimensional array, and so on.
• Another way of looking at this is that C stores two dimensional arrays by rows,
with all elements of a row being stored together as a single unit. Knowing this
can sometimes lead to more efficient programs.
• Multidimensional arrays may be completely initialized by listing all data
elements within a single pair of curly {} braces, as with single dimensional
arrays.
• It is better programming practice to enclose each row within a separate subset of
curly {} braces, to make the program more readable. This is required if any row
other than the last is to be partially initialized. When subsets of braces are used,
the last item within braces is not followed by a comma, but the subsets are
themselves separated by commas.
• Multidimensional arrays may be partially initialized by not providing complete
initialization data. Individual rows of a multidimensional array may be partially
initialized, provided that subset braces are used.
• Individual data items in a multidimensional array are accessed by fully qualifying
an array element. Alternatively, a smaller dimensional array may be accessed by
partially qualifying the array name. For example, if "data" has been declared as
a three dimensional array of floats, then data[ 1 ][ 2 ][ 5 ] would refer to a float,
data[ 1 ][ 2 ] would refer to a one-dimensional array of floats, and data[ 1 ] would
refer to a two-dimensional array of floats. The reasons for this and the incentive
to do this relate to memory-management issues that are beyond the scope of these
notes.

Sample Program Using 2-D Arrays


/* Sample program Using 2-D Arrays */

#include <stdlib.h>
#include <stdio.h>

int main( void ) {

/* Program to add two multidimensional arrays */


/* Written May 1995 by George P. Burdell */

int a[ 2 ][ 3 ] = { { 5, 6, 7 }, { 10, 20, 30 } };


int b[ 2 ][ 3 ] = { { 1, 2, 3 }, { 3, 2, 1 } };
int sum[ 2 ][ 3 ], row, column;

/* First the addition */

for( row = 0; row < 2; row++ )


for( column = 0; column < 3; column++ )
sum[ row ][ column ] =
a[ row ][ column ] + b[ row ][ column ];

/* Then print the results */

printf( "The sum is: \n\n" );

for( row = 0; row < 2; row++ ) {


for( column = 0; column < 3; column++ )
printf( "\t%d", sum[ row ][ column ] );
printf( '\n' ); /* at end of each row */
}

return 0;
}

You might also like