Rob Toulson / Mbed 2 deprecated PE_10-05_PointersExample

Dependencies:   mbed

Committer:
robt
Date:
Fri May 24 22:17:09 2013 +0000
Revision:
0:e9541fd79b08
by Rob Toulson and Tim Wilmshurst from textbook "Fast and Effective Embedded Systems Design: Applying the ARM mbed"

Who changed what in which revision?

UserRevisionLine numberNew contents of line
robt 0:e9541fd79b08 1 /* Program Example 10.5: Pointers example for an array average function
robt 0:e9541fd79b08 2 */
robt 0:e9541fd79b08 3 #include "mbed.h"
robt 0:e9541fd79b08 4 Serial pc(USBTX, USBRX); // setup serial comms
robt 0:e9541fd79b08 5 char data[]={5,7,5,8,9,1,7,8,2,5,1,4,6,2,1,4,3,8,7,9}; //define some input data
robt 0:e9541fd79b08 6 char *dataptr; // define a pointer for the input data
robt 0:e9541fd79b08 7 float average; // floating point average variable
robt 0:e9541fd79b08 8
robt 0:e9541fd79b08 9 float CalculateAverage(char *ptr, char size); // function prototype
robt 0:e9541fd79b08 10
robt 0:e9541fd79b08 11 int main() {
robt 0:e9541fd79b08 12 dataptr=&data[0]; // point pointer to address of the first array element
robt 0:e9541fd79b08 13 average = CalculateAverage(dataptr, sizeof(data)); // call function
robt 0:e9541fd79b08 14 pc.printf("\n\rdata = ");
robt 0:e9541fd79b08 15 for (char i=0; i<sizeof(data); i++) { // loop for each data value
robt 0:e9541fd79b08 16 pc.printf("%d ",data[i]); // display all the data values
robt 0:e9541fd79b08 17 }
robt 0:e9541fd79b08 18 pc.printf("\n\raverage = %.3f",average); // display average value
robt 0:e9541fd79b08 19 }
robt 0:e9541fd79b08 20
robt 0:e9541fd79b08 21 // CalculateAverage function definition and code
robt 0:e9541fd79b08 22 float CalculateAverage(char *ptr, char size) {
robt 0:e9541fd79b08 23 int sum=0; // define variable for calculating the sum of the data
robt 0:e9541fd79b08 24 float mean; // define variable for floating point mean value
robt 0:e9541fd79b08 25 for (char i=0; i<size; i++) {
robt 0:e9541fd79b08 26 sum=sum + *(ptr+i); // add all data elements together
robt 0:e9541fd79b08 27 }
robt 0:e9541fd79b08 28 mean=(float)sum/size; // divide by size and cast to floating point
robt 0:e9541fd79b08 29 return mean;
robt 0:e9541fd79b08 30 }