C++(1) -- 函数指针

函数指针与函数调用相比,只有形参的说明(就是函数内部的说明)而无实参的传入。与数组类似,函数指针即为函数名称。在下图中,c++内置函数qsort(实现排序)就是需要函数指针的:

在这里插入图片描述

MyCompare函数就是qsort函数调用的函数指针,规则为:若元素1在元素2前,则返回值为负数。
重要:
传入参数类型为const void* (指针),因为为void,无法得知其指向的元素的size(size也是qsort需要的实参)
考虑到数组an的元素都为unsigned int类型,所以使用p1,p2将elem1,elem2强制转换成unsigned int* 类型(即对应的数据类型的指针),然后再使用*p1,*p2指代elem1,elem2所指向的需要比较的元素
这里虽然完成了强制转换,但是要注意指向的元素是不变的

------所以要把这一块记下来,因为直接使用*elem1是非法的,编译不通过
然后注意数组的写法:
unsigned int an[NUM]={1,2,3,4,5};

#include<iostream>
int max(int a,int b){return a>b?a:b;};

int main(){
int (*ptr)(int,int);
ptr = max;//将函数首地址赋值给函数指针
int a=1,b=2,c;
c = (*ptr)(a,b);//传入实参
return 0;}
发布了8 篇原创文章 · 获赞 1 · 访问量 128

猜你喜欢

转载自blog.csdn.net/wouldlikemathpix/article/details/104363827