函数指针

函数指针

背景:

1
2
3
4
5
6
7
8
9
编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数 求1/1+1/3+...+1/n(要求利用函数指针编程)

输入格式:"%d"
程序运行示例1如下:
10
Even=1.141666
程序运行示例2如下:
9
Odd=1.787302

代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>

double even_sum(int);
double odd_sum(int);

int main()
{ int n;
double (*current)(int);
scanf("%d",&n);
if(n%2==0){
current=even_sum;
}else{
current=odd_sum;
}
double result=current(n);
if(n%2==0){
printf("Even=%f",result);
}else{
printf("Odd=%f",result);
}
return 0;
}

double even_sum(int n){
double result=0;
for(int i=2;i<=n;i+=2){
result+=1.0/i;
}
return result;
}

double odd_sum(int n){
double result=0;
for(int i=1;i<=n;i+=2){
result+=1.0/i;
}
return result;
}

double (*func_ptr)(int); 这行代码声明了一个名为 func_ptr 的指针,它专门用来指向“接受一个 int 参数并返回 double 类型结果”的函数。

定义函数指针,current不仅是一个函数名,还是一个专门用来存地址的指针变量


函数指针
http://example.com/2025/12/14/函数指针/
作者
王柏森
发布于
2025年12月14日
许可协议