【C语言_18】函数指针与函数指针数组

时间:2022-10-10 11:05:23

1.指向函数的指针

(1).定义函数指针

指针 (*p)
指向函数 (*p)(char *)
函数的返回值为int
int (*p)(char *)
//返回值类型 (*指针变量名)(指针变量指向的参数类型);
int (*p)(char *);
int (*p)(int,int);
//指向print函数
//函数在表达式中将转换为该函数的指针

(2).使用函数指针

#include<stdio.h>
int main()
{
int (*p)(char *) = printf;
int n = (*p)("helloworld");
printf("%c", n);
return 0;
}

运行结果:

【C语言_18】函数指针与函数指针数组

#include<stdio.h>
int Max(int, int);//函数声明
int main()
{
int (*p)(int, int);//定义函数指针
int a, b, c;
p = Max;//把函数Max赋给指针变量p,使p指向Max函数
printf("Enter a and b:\n");
scanf("%d %d", &a, &b);
c = (*p)(a, b);//通过函数指针调用Max函数
printf("Max=%d", c);
return 0;
}
int Max(int x, int y)
{
int d;
if (x> y)
d = x;
else
d = y;
return d;
}

【C语言_18】函数指针与函数指针数组

2.函数指针数组

(1).定义函数指针数组

//返回值类型 (*函数指针数组名)[元素个数](函数指针指向的函数类型);
int (*parr)[10](int,int);
//返回值类型 (*函数指针数组名[元素个数])(函数指针指向的函数类型);
int (*parr[10])(int,int);

(2).使用函数指针数组

#include<stdio.h>
void add();
void sub();
void mul();
void div();
int main()
{
void (*parr[4])()={add,sub,mul,div};
for(int i=0;i<4;i++){
(*parr[i])();
}
return 0;
}
void add()
{
printf("+++++\n");
}
void sub()
{
printf("-----\n");
}
void mul()
{
printf("*****\n");
}
void div()
{
printf("/////\n");
}

运行结果:

【C语言_18】函数指针与函数指针数组


持续更新【C语言】系列!有需要的可以移步主页​​秃头程序员主页​