Skip to content

Instantly share code, notes, and snippets.

@hduffddybz
Created October 30, 2014 02:09
Show Gist options
  • Save hduffddybz/16e1bef0d2c165be9c41 to your computer and use it in GitHub Desktop.
Save hduffddybz/16e1bef0d2c165be9c41 to your computer and use it in GitHub Desktop.
Function pointer & Pointer function Correct Usage
#include <stdio.h>
#include <assert.h>
typedef double (*PF)(double *dbData, int iSize);
double getMin(double *dbData, int iSize)
{
double dbMin;
int i;
assert(iSize > 0);
dbMin = dbData[0];
for(i = 1; i < iSize; i++)
if(dbMin > dbData[i])
dbMin = dbData[i];
return dbMin;
}
double getMax(double *dbData, int iSize)
{
double dbMax;
int i;
assert(iSize > 0);
dbMax = dbData[0];
for(i = 1; i < iSize; i++)
if(dbMax < dbData[i])
dbMax = dbData[i];
return dbMax;
}
double getAverage(double *dbData, int iSize)
{
double dbSum = 0;
int i;
assert(iSize > 0);
for(i = 0; i < iSize; i++)
dbSum += dbData[i];
return dbSum / iSize;
}
double unKnown(double *dbData, int iSize)
{
return 0;
}
PF getOperation(char c)
{
switch(c)
{
case 'd':
return getMax;
case 'x':
return getMin;
case 'p':
return getAverage;
default:
return unKnown;
}
}
int main(void)
{
double dbData[] = {3.1415926, 1.4142, -0.5999, -313, 365};
int iSize = sizeof(dbData) / sizeof(dbData[0]);
char c;
printf("please input the operation:\n");
c = getchar();
printf("result is %1f\n", getOperation(c)(dbData, iSize));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment