|
UMBC CMSC 201 Spring '06 CSEE | 201 | 201 S'06 | lectures | news | help |
Ben and his programmers didn't use the array that way.
But consider this sample program that exploits this behavior.
/*************************************************\
* Filename: passing.c *
* Author: Sue Bogar *
* Date Written: Spring 97 *
* Section: 101 *
* EMail: bogar@cs.umbc.edu *
* Modified: 2/25/98 by the author. *
* *
* This program was designed to show an example *
* of passing an array to a function *
\*************************************************/
#include <stdio.h>
#define SIZE 10
/* Example prototype of a function that takes
an array as an argument. NOTE: the empty
square brackets. You can optionally put the
size within the brackets. */
void Cubes(int cubes[], int numElems);
int main ( )
{
int array[SIZE], i ;
/* Assign each element the value of
the index squared */
for (i = 0; i < SIZE; i++)
{
array[i] = i * i ;
}
/* Print the values of the elements */
for (i = 0; i < SIZE; i++)
{
printf("array[%d] = %d\n", i, array[i]) ;
}
printf("\n") ;
/* Example of a function call. NOTE: only the
name of the array is passed (the address) */
Cubes(array, SIZE) ;
/* Print the values of the elements */
for (i = 0; i < SIZE; i++)
{
printf("array[%d] = %d\n", i, array[i]) ;
}
printf("\n") ;
return 0;
}
/********************************************
* Function : Cubes
*
* Cubes replaces each of the elements in the
* array passed in with the cube of the index.
*
* Input: an array of ints (cubes)
* the size of the array (numElems)
* Output: there is no return value.
********************************************/
void Cubes(int cubes[], int numElems)
{
int i ;
/* Assign each element the value of the
index cubed */
for (i = 0; i < numElems; i++)
{
cubes[i] = i * i * i ;
}
}
array[0] = 0 array[1] = 1 array[2] = 4 array[3] = 9 array[4] = 16 array[5] = 25 array[6] = 36 array[7] = 49 array[8] = 64 array[9] = 81 array[0] = 0 array[1] = 1 array[2] = 8 array[3] = 27 array[4] = 64 array[5] = 125 array[6] = 216 array[7] = 343 array[8] = 512 array[9] = 729
/***********************************
** File: addingarrays.c
** Author: D. Frey
** Date: 2/9/00
** Section: 303
** EMail: frey@cs.umbc.edu
** Modified by: Sue Evans
** Mod. Date: 2/21/04
**
** This program is an example of
** passing arrays to functions.
**
** An array of even integers and an array
** of odd integers are displayed and the
** sum of the corresponding elements is
** calculated and displayed
**
***********************************/
#include <stdio.h>
/* number of elements in each array */
#define NUM_ELEMENTS 5
/* function prototypes */
void PrintArray (int array[], int size);
void AddArrays (int array1[], int array2[],
int totals[], int size);
int main ( )
{
/* initializing arrays */
int evens [NUM_ELEMENTS] = {2, 8, 12, 14, -4};
int odds [NUM_ELEMENTS] = {3, 5, 7, 9, 17};
/* initializes all of the elements to 0
CAUTION: This ONLY WORKS FOR 0 */
int total [NUM_ELEMENTS] = {0};
/* a few blank lines if you please */
printf ("\n\n");
/* display the even integer array */
printf ("Evens:");
printf ("\t");
PrintArray (evens, NUM_ELEMENTS);
/* display the odd integer array */
printf ("Odds:");
printf ("\t");
PrintArray (odds, NUM_ELEMENTS);
/* add the corresponding elements of the arrays */
AddArrays (evens, odds, total, NUM_ELEMENTS);
/* display the totals array */
printf ("Totals:");
printf ("\t");
PrintArray (total, NUM_ELEMENTS);
printf ("\n\n");
return 0;
}
/***********************************
** Function: PrintArray()
**
** PrintArray() displays the elements of an
** integer array on one line
**
** Input: an integer array and
** the number of elements in the array
** Output: there is no return value
***********************************/
void PrintArray (int array[], int size)
{
int i;
for (i = 0; i < size; i++)
{
printf ("%4d", array[i]);
}
printf ("\n");
}
/***********************************
** Function: AddArrays
**
** AddArrays() adds the elements with the
** same index of array1 & array2 and stores
** their sum in the array, totals, at that
** index. Although nothing is returned, the
** array, totals, passed in is modified by
** the function to hold the sums described
** above.
**
** Inputs: 2 integer arrays to be added,
** an integer array to hold the result
** & the size of all arrays
** Output: there is no return value
** Assumptions: all arrays are the same size
***********************************/
void AddArrays (int array1[], int array2[],
int totals[], int size)
{
int i;
for (i = 0; i < size; i++)
{
totals[i] = array1[i] + array2[i];
}
}
linux1[108] % a.out Evens: 2 8 12 14 -4 Odds: 3 5 7 9 17 Totals: 5 13 19 23 13