C语言详细笔记--指针(3)指针与函数

本期博客紧跟上期吖,主要介绍指针与函数的相关内容。


目录

一、返回指针的函数

二、指向函数的指针

1.函数指针的定义

2.函数指针的赋值

3.通过函数指针调用函数

4.函数指针作为函数的参数


一、返回指针的函数

返回指针型数据的函数叫做指针函数,一般格式如下:

类型说明符 *函数名(形参列表)

{

        函数体

}

说明:1.指针函数比普通函数在函数名前面多了一个* ,这个 * 号表示函数的返回值是一个指针类型数据;

2.类型说明符表示返回的指针型数据所指向的数据类型;

3.函数体中,return语句返回的可以是变量的地址、数组元素的地址或指针变量,也可以是结构体等构造数据类型的首地址。 

//例如求数组a中各元素的最小值
int *min(int arr[],int n)//定义指针函数
{
    int *pm,i;//定义指针变量
    pm=&arr[0];
    for(i=1;i<n;i++){
        if(arr[i]<*pm)
            pm=&arr[i];//将pm指向当前最小值的元素
    }
    return pm;//返回指向数组arr最小值的指针pm
}

二、指向函数的指针

1.函数指针的定义

类型说明符(*指针变量名)(形参变量); 

//例如
int(*pf)(int,int);

说明:1.类型说明符表示指针变量所指向函数的返回值类型

2.*指针变量名两边的括号不能省略,否则就变成定义返回指针的函数。

3.形参列表表示指针变量所指向函数的形参类型,当函数没有参数时圆括号不能省略。

2.函数指针的赋值

指针变量名=函数名; 

int getmax(int a,int b)
{
    if(a>b)return a;
    else return b;
}
int(*pf)(int,int);
pf=getmax;//将函数名赋值给指针变量

说明:1.指针变量名必须是以定义的指向函数的指针变量,函数返回值与指针变量所指向的类型要一致。

2.函数名后面不能带圆括号和参数。

3.通过函数指针调用函数

//例如前面的getmax函数调用方法有两种
//max=(*pf)(10,20);
//max=pf(10,20);

(*指针变量名)(实参列表)

指针变量名(实参列表) 

说明:这两种都可以但是建议用(*指针变量名)(实参列表),以表明为函数指针,增强程序可读性。

4.函数指针作为函数的参数

例如:用矩形法求函数f(x)在区间[a,b]上的定积分,\int_{0}^{1}x^{^{3}}dx,\int_{1}^{2}xsin(x)dx,\int_{2}^{3}xcosx dx 

#include<stdio.h>
#include<math.h>
double funintefral(double(*pf)(double), double a, double b)
{
	double dx = 0.001;
	double sum = 0.0, x = a;
	while (x < b)
	{
		sum = sum + (*pf)(x) * dx;
		x = x + dx;
	}
	return sum;
}
double f1(double x)
{
	return x * x * x;
}
double f2(double x)
{
	return x * sin(x);
}
double f3(double x)
{
	return 1 * x * cos(x);
}
int main()
{
	printf("%3.f", funintefral(f1, 0, 1));
	printf("%3.f", funintefral(f2, 1, 2));
	printf("%3.f", funintefral(f3, 2, 3));
	return 0;
}

本期博客到这里就结束啦~~后期还会有指针相关内容哟,喜欢的话点赞收藏加关注吧!! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值