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