C语⾔函数作为函数参数
C语⾔函数作为参数
为了满⾜DRY思想,减少代码的重复性,考虑将函数作为参数传⼊另⼀函数中。C语⾔是可以将函数作为函数参数的。
⽤到的⽅法是函数指针。
⾸先需要明确的是, 在C语⾔中,函数名就是函数的⾸地址,所以将函数作为函数参数的思路是将函数地址传⼊,形参是⼀个指针类型的变量,形参的基类型为函数原型。
参数原型为:
ElemType(*FunctionName)(ElemType, ElemType, ......)
其中:ElemType为声明(如int, float, double,struct等)
以冒泡排序为例借助判断⼤⼩函数进⾏数组排序的具体实现⽅法如下:
#include<stdio.h>
#define YES 1
#define NO 0
///*判断函数,进⾏元素⼤⼩判断,increase判断⼤⼩⽐较*/
int compare(int a,int b,int increase)
{update前4个语句
if(increase >0){
if(a > b)return YES;
else return NO;
}
else
{
c语言的软件怎么下载if(a < b)return YES;
else return NO;
}
}
/*冒泡排序进⾏数组排序*/
void OrderArr(int arry[],int(*compare)(int,int,int),int length,int increase =1) {
for(int i =0; i < length -1; i++)
{
for(int j =0; j < length - i -1; j++)
{
if(compare(*(arry + j),*(arry + j +1), increase))
{
int temp =*(arry + j +1);
*(arry + j +1)=*(arry + j);
*(arry + j)= temp;
}
}
}
}
/*输出函数*/
void Print(int a[],int length)
{
for(int i =0; i < length; i++)
{
冒泡排序代码c语言printf("%d ",*(a + i));
}
printf("\n");select语句执行过程
}
int main()
{
int a[5]={1,4,2,6,3};
js keypress
//增序排列数组
OrderArr(a, compare,5);
Print(a,5);
//降序排列数组
OrderArr(a, compare,5,-1);
Print(a,5);
}
墨茶花

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。