PPT8-12 用函数指针变量调用函数.pdf
用函数指针变量调用函数 实例8.9用指向函数的指针变量 调用int arrAdd (int arr,int n) 函数,求二维数组中全部元素之 和。 用函数指针变量调用函数 解题思路:对于N行M列的二维数 组,定义指向函数的指针,调用函 数求解二维数组各元素之和。 用函数指针变量调用函数 #include #define N 3 #define M 4 int arrAdd (int arr,int n) int i; int sum = 0; for(i = 0;i < n;i+) sum +=arri; return sum; int main(int argc, char *argv) int aNM = 1,3,5,7,9,11,13,15,17,19,21,23; int * p,total1,total2; int (*pt)(int *,int); pt = arrAdd; p = a0; total1 = arrAdd(p,N*M); total2 = (*pt)(p,N*M); printf (total1=%dntotal2=%dn,total1,total2); return 0; a1357 911 13 15 17 19 21 23 a1357911 13 15 17 19 21 23 a1357 911 13 15 17 19 21 23 #include #define N 3 #define M 4 int arrAdd (int arr,int n) int i; int sum = 0; for(i = 0;i < n;i+) sum +=arri; return sum; int main(int argc, char *argv) int aNM = 1,3,5,7,9,11,13,15,17,19,21,23; int * p,total1,total2; int (*pt)(int *,int); pt = arrAdd; p = a0; total1 = arrAdd(p,N*M); total2 = (*pt)(p,N*M); printf (total1=%dntotal2=%dn,total1,total2); return 0; a1357 911 13 15 17 19 21 23 a1357911 13 15 17 19 21 23 pt p p 12 arr sum144 total1144 total2 #include #define N 3 #define M 4 int arrAdd (int arr,int n) int i; int sum = 0; for(i = 0;i < n;i+) sum +=arri; return sum; int main(int argc, char *argv) int aNM = 1,3,5,7,9,11,13,15,17,19,21,23; int * p,total1,total2; int (*pt)(int *,int); pt = arrAdd; p = a0; total1 = arrAdd(p,N*M); total2 = (*pt)(p,N*M); printf (total1=%dntotal2=%dn,total1,total2); return 0; a1357 911 13 15 17 19 21 23 a1357911 13 15 17 19 21 23 pt p p 12 arr sum144 total1144 total2144 total1 = 144 total2 = 144 程序中分别用函数名和指向函数的指 针变量来调用函数arrAdd。从运行结果 可以看到两种方法的结果是相同的。请注 意:在用指针变量调用函数之前,应先将 函数入口地址赋给指针变量,以便建立指 针变量与函数的对应关系。 用函数指针变量调用函数 解决问题 合理建立指针变量和函数的关系有助于增强程 序设计的灵活性。同学们,后面的案例会给予大家 更深刻的领悟,同学们,你们准备好了吗?