定义:
指向函数的指针包含内存中该函数的地址。
1)函数指针
如使用指针选择排序:
函数bool compare(int a,int b);在参数中写成 bool (*compare)(int ,int),其中compare必须加括号,不加就表示是一个返回bool * 的函数。
sort(int *array,int size, bool (*compare)(int ,int ))
代码:
#include<iostream>
#include<iomanip>
using namespace std;
bool as(int a,int b)//before big //升序排列
{
return a>b;
}
bool deas(int a,int b)
{
return a<b;
}
void swap(int *a ,int *b)
{
int c=*a;
*a=*b;
*b=c;
}
void sort(int *arr,int size,bool (*com) (int a,int b))
{
int flag=0;
for(int i=1;i<size;i++)
{
flag=1;
for(int j=0;j<size-i;j++)
if(com(arr[j],arr[j+1]))
{
swap(arr[j],arr[j+1]);
flag=0;
}
if(flag) break;
}
}
void p(int *arr,int size)
{
for(int i=0;i<size;i++)
cout<<arr[i]<<setw(4);
cout<<endl;
}
int main()
{
const int size=6;
int arr[size]={1,2,3,6,5,4};
p(arr,size);
sort(arr,size,as);
p(arr,size);
sort(arr,size,deas);
p(arr,size);
int b;
cin>>b;
}
2)函数指针数组
必须是各函数的返回值和参数类型相同
如:void fun0(int ,int);
void fun1(int ,int);
void fun2(int ,int);
函数数组: void (*f[3])(int,int)={fun0,fun1,fun2);
调用时:(*f[index](int,int);
编译器开发者使用函数指针数组来支持实现虚函数,而虚函数是支持多态性的关键技术。
未完待续
函数指针
最新推荐文章于 2024-05-11 12:12:17 发布