您的位置:首页 > 其它

用函数指针调用函数

2015-10-29 00:00 323 查看
#include <stdio.h>

int main(void){
int n = 6;
int square(int num);
int (*fptr)(int);  //声明函数指针
fptr = square;   //初始化函数指针
printf("%d square is %d.\n", n, fptr(n));
return (0);
}
int square(int num){
return (num * num);
}


#include <stdio.h>

double square(double x);  // 函数原型
double (*ptr)(double x);  // 声明函数指针

int main(void){
ptr = square;  // 让指针指向square()

//用两种方式调用square()
printf("%f %f\n", square(6.6), ptr(6.6));
return 0;
}

double square(double x){
return x * x;
}


用函数指针根据不同使用情况调用不同函数:

#include <stdio.h>
#include <stdlib.h>

void func1(int x);
void one(void);
void two(void);
void other(void);

int main(void){
int nbr;
for(;;){
puts("\nEnter an integer between 1 and 10, 0 to exit: ");
scanf("%d", &nbr);
if(nbr == 0){
exit(0);
}
func1(nbr);
}
return 0;
}

void func1(int val){
void (*ptr)(void);
if (val == 1)
ptr = one;
else if(val == 2)
ptr = two;
else
ptr = other;
ptr();
}
void one(void){
puts("You entered 1.");
}
void two(void){
puts("You entered 2.");
}
void other(void){
puts("You entered something other than 1 or 2.");
}


#include <stdio.h>
//函数func1()接受一个函数指针参数,该指针指向的函数不接受任何参数,也没有返回值
void func1(void (*p)(void));
void one(void);
void two(void);
void other(void);

int main(void){
void (*ptr)(void); // 函数指针
int nbr;

for(;;){
puts("\nEnter an integer between 1 and 10, 0 to exit: ");
scanf("%d", &nbr);

if(nbr == 0){
break;
} else if(nbr == 1){
ptr = one;
} else if(nbr == 2){
ptr = two;
} else {
ptr = other;
}
func1(ptr);
}
return 0;
}

void func1(void (*p)(void)){
p();
}
void one(void){
puts("You enter 1.");
}
void two(void){
puts("You enter 2.");
}
void other(void){
puts("You enter something other than 1 or 2.");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: