指针函数与函数指针

1、指针函数

(1)定义

指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。

(2)声明格式

类型标识符 函数名(参数表)
例如:int* sqare(int a);

(3)示例

参见3示例。

2、函数指针

(1)定义

函数指针,其本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针。

(2)声明格式

类型说明符 (*函数名) (参数)
例如:int (*fun)(int,int);

(3)示例

参见3示例。

3、示例

(1)代码(VC++6.0)

#include <stdio.h>

/*指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针*/
//定义一个求int类型数值平方值的指针函数,返回值为平方值的地址
int* sqare(int a)
{	
	a = a *a ;
	int *p = &a ;
	return p;//返回指针,即平方值地址
}
/*函数指针,其本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针。*/
//先定义函数
int add(int x,int y)
{
    return x+y;
}
int sub(int x,int y)
{
    return x-y;
}
//定义一个函数指针,函数两个int型参数,函数返回值类型为int
int (*fun)(int,int);

int main ()
{
	/*指针函数*/
	printf("指针函数的示例输出:\n");
	int *m = sqare(10) ;//sqare(10)的值为地址,要赋给指针变量
    printf("10的平方为%d。\n",*m) ;//打印出10的平方值
	printf("12的平方为%d。\n\n",*sqare(12)) ;//打印12的平方值

	/*函数指针*/
	printf("指针函数的示例输出:\n");
	//打印add函数的地址,从以下打印结果可以看出add前加不加&符号打印结果都是一样的
	printf("不加&符号时add函数地址为%d,加&符号add函数的地址为%d。\n",add,&add);
	printf("从以上打印结果可以看出add前加不加&符号打印结果都是一样的\n");
	//函数指针fun指向add函数
	fun = add;
	printf("10加上5等于%d。\n",fun(10,5));
	//函数指针指向sub函数
	fun = &sub;
	printf("10减去5等于%d。\n\n",sub(10,5));
	//调用函数指针的方式也有两种,建议第一种,因为可以清楚的指明这是通过指针的方式来调用函数。
	int p = fun (8,6);//调用方式一
	int q = (*fun)(8,6);//调用方式二
	printf("调用方式一8减去6的结果为%d,\n调用方式二8减去6的结果为%d\n",p,q);
	return 0 ;
}

(2)输出结果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值