目录
一、什么是指针数组
指针数组的每一项存放的都是指针
定义指针数组,赋值,访问
代码演示:
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
int c = 30;
int d = 40;
int *p[4] = {&a,&b,&c,&d}; //指针数组的定义和指向,指针数组每一项存放的都是指针
for(int i = 0;i<4;i++){ //遍历打印指针数组的每一项
printf("%d ",*p[i]);
//printf("%d ",*(p[i])); //见怪不怪
}
return 0;
}
运行结果:
10 20 30 40
二,如何定义函数指针数组
代码演示 :
#include<stdio.h>
#include<stdlib.h>
int getmax(int a,int b)
{
}
int getmin(int a,int b)
{
}
int get(int a,int b)
{
}
int main()
{
int (*p[3])(int ,int ) = {getmax,getmin,get}; //定义函数指针数组
//定义一个函数地址的函数指针数组,将函数指针数组指向(存放)三个函数的地址
//定义的函数指针数组的类型要与被指向函数类型相同
//定义的函数指针数组的参数要与被指向函数的参数类型一致匹配
return 0;
}
函数指针数组的实战应用
例题一
有两个整数a和b。求最大值;求最小值;求两整数值的和。(用函数指针数组方法)
代码演示
#include<stdio.h>
#include<stdlib.h>
int getmax(int a,int b)
{
return a>b?a:b;
}
int getmin(int a,int b)
{
return a<b?a:b;
}
int get(int a,int b)
{
return a+b;
}
int main()
{
int a = 10;
int b = 20;
int (*p[3])(int ,int ) = {getmax,getmin,get}; //定义一个存放多个函数地址的数组指针
int ret;
for(int i = 0;i<3;i++){
printf("%d ",p[i](a,b)); //方式一,调用函数指针数组,
//printf("%d ",(*p[i])(a,b)); //方式二,
}
return 0;
}
运行结果:
20 10 30 //最大值 最小值 两值的和