使用函数指针求数组的最大值和和。类推可以写出其他运算的函数。
三种方法求解相同, 封装两个函数指针而已。
把遍历的地方修改一下,抽象出一个求和一个求最大数。
只是抽象了,但是感觉过度封装了。
#import <Foundation/Foundation.h>
typedef int iArr[10];
typedef int(* PFUN)(int, int);
typedef struct NameAndAdress {
char name[10];
PFUN pFun;
}NameAndAdress;
int iMax(int a, int b){
return (a>b)?a:b;
}
int iSum(int a, int b){
return a+b;
}
int getResult(iArr arr, int length, PFUN pFuncAdd ){
int temp = 0;
for (int i = 0; i<length; i++) {
temp = pFuncAdd(temp, arr[i]);
}
return temp;
}
int getResultByArr(iArr arr, int length, PFUN pFuncAdd[], int opr ){
int temp = 0;
for (int i = 0; i<length; i++) {
temp = pFuncAdd[opr](temp,arr[i] );
}
return temp;
}
int getResultByCharArr(iArr arr, int length, PFUN pFuncAdd[], char* opr ){
NameAndAdress naa[2] =