Static array

 

Static arrays are automatically initialized to zero if not explicitly initialized by the programmer.

 

#include <stdio.h>

void staticArrayInit( void );
void automaticArrayInit( void );

int main()
{
printf( "First call to each function:\n" );
staticArrayInit();
automaticArrayInit();
printf( "\n\nSecond call to each function:\n" );
staticArrayInit();
automaticArrayInit();
return 0;
}

/* function to demonstrate a static local array */
void staticArrayInit( void )
{
static int a[ 3 ];
int i;

printf( "\nValues on entering staticArrayInit:\n" );

for ( i = 0; i <= 2; i++ )
printf( "array1[%d] = %d ", i, a[ i ] );

printf( "\nValues on exiting staticArrayInit:\n" );

for ( i = 0; i <= 2; i++ )
printf( "array1[%d] = %d ", i, a[ i ] += 5 );
}

/* function to demonstrate an automatic local array */
void automaticArrayInit( void )
{
int a[ 3 ] = { 1, 2, 3 }, i;

printf( "\n\nValues on entering automaticArrayInit:\n" );

for ( i = 0; i <= 2; i++ )
printf("array1[ %d ] = %d ", i, a[ i ] );

printf( "\nValues on exiting automaticArrayInit:\n" );

for ( i = 0; i <= 2; i++ )
printf( "array1[ %d ] = %d ", i, a[ i ] += 5 );
}

 

Output:

 

First call to each function:

Values on entering staticArrayInit:

array1[0] = 0  array1[1] = 0  array1[2] = 0 

Values on exiting staticArrayInit:

array1[0] = 5  array1[1] = 5  array1[2] = 5 

Values on entering automaticArrayInit:

array1[ 0 ] = 1  array1[ 1 ] = 2  array1[ 2 ] = 3 

Values on exiting automaticArrayInit:

array1[ 0 ] = 6  array1[ 1 ] = 7  array1[ 2 ] = 8 

 

Second call to each function:

Values on entering staticArrayInit:

array1[0] = 5  array1[1] = 5  array1[2] = 5 

Values on exiting staticArrayInit:

array1[0] = 10  array1[1] = 10  array1[2] = 10 

Values on entering automaticArrayInit:

array1[ 0 ] = 1  array1[ 1 ] = 2  array1[ 2 ] = 3 

Values on exiting automaticArrayInit:

array1[ 0 ] = 6  array1[ 1 ] = 7  array1[ 2 ] = 8