Summing an Array of Integers

Let's say you want to add 10 integers that are stored in an array.

AddArray1.c

#include <stdio.h>

int addArray( int [], int );

int main() 
{
    int data[] = {4,3,2,1,0,5,6,7,8,9};                       /* (A) */
    int size = sizeof(data)/sizeof(data[0]);                  /* (B) */
    printf("sum is %d\n", addArray( data, size ));            /* (C) */
    return 0;
}

int addArray( int a[], int n ) {                              /* (D) */
    int sum = 0;
    int i;
    for(i=0; i<n; i++ )
        sum += a[i];                                          /* (E) */
    return sum;
}

Line (A) of main declares an integer array data and initializes it. Line (B) calculates the number of elements in the array. The function addArray is called to do the summation.

The program uses data as an array name in the main program. In main, the sizeof operator returns 40 bytes. If the same call were made on a in the function addArray, the sizeof operator would return 4 bytes for the size required to store a memory pointer on a 32-bit system.

AddArray2.c

This version uses pointers explicitly, but does the same thing.

#include <stdio.h>

int addArray( int*, int );

int main(void) 
{
    int data[] = {4,3,2,1,0,5,6,7,8,9};
    int size = sizeof(data)/sizeof(data[0]);
    printf("Pointer Version: sum is %d\n", addArray( data, size ));
    return 0;
}

int addArray( int* a, int n ) {
    int sum = 0;
    int i;
    for(i=0; i<n; i++ )
        sum += *a++;
    return sum;
}

AddArray.cpp

The C version of the program used the standard I/O library, declared in stdio.h. The C++ version below uses the iostreams component of C++.

#include <iostream>                                               //(A)
using namespace std;                                              //(B)

int addArray( int*, int );

int main(void)
{
    int data[] = {4,3,2,1,0,5,6,7,8,9};
    int size = sizeof(data)/sizeof(data[0]);
    cout << "C++ version: sum is "                                //(C)
         << addArray( data, size ) << endl;
    return 0;
}

int addArray( int* a, int n) {
    int sum = 0;
    int i;
    for(i=0; i<n; i++ )
        sum += *a++;
    return sum;
}

AddArray.java

public class AddArray {                                           //(A)

    public static void main( String[] args )                      //(B)
    {
        int[] data = { 0, 1, 2, 3, 4, 5, 9, 8, 7, 6 };            //(C)
        System.out.println( "The sum is: "                        //(D)
                                 + addArray(data) );  
    }

    public static int addArray( int[] a ) {                       //(E)
        int sum = 0;                               
        for ( int i=0; i < a.length; i++ )            
            sum += a[i];                             
        return sum;                                
    }
}          

addarray.py

' example python script to sum an array of integers '

def addArray(a):
    sum = 0
    for v in a:
        sum += v
    return sum

data =  [4,3,2,1,0,5,6,7,8,9]
print "The sum is %d" % addArray(data)


Maintained by John Loomis, last updated 29 December 2006