C语言,指向函数的指针

本文详细介绍了函数指针的基本概念,包括其作为函数内存区域首地址的特性,以及如何定义和使用函数指针。通过一个实际案例展示了如何利用函数指针找到并调用函数,实现求两个整数中最大值的功能。函数指针使得动态调用函数成为可能,增强了程序的灵活性。

基本介绍

1)一个函数总是占用一段连续的内存区域,函数名在表达式中有时也会被转换为该函数所在内存区域的首地址, 这和数组名非常类似。
2) 把函数的这个首地址(或称入口地址)赋予一个指针变量,使指针变量指向函数所在的内存区域 然后通过指针变量就可以找到并调用该函数。这种指针就是函数指针。

函数指针定义

returnType (*pointerName)(param list); 

1)returnType 为函数指针指向的函数返回值类型
2)pointerName 为函数指针名称
3)param list 为函数指针指向的函数的参数列表
4)参数列表中可以同时给出参数的类型和名称,也可以只给出参数的类型,省略参数的名称
5)注意( )的优先级高于*,第一个括号不能省略,如果写作 returnType *pointerName(param list);就成了函数原型, 它表明函数的返回值类型为 returnType *

应用案例

用函数指针来实现对函数的调用, 返回两个整数中的最大值.

#include <stdio.h> 

//说明 
//1. max 函数 
//2. 接收两个 int ,返回较大数 
int max(int a, int b){ 
	return a>b ? a : b; 
}

int main(){ 
	int x, y, maxVal; //说明 函数指针 
	
	//1. 函数指针的名字 pmax 
	//2. int 表示 该函数指针指向的函数是返回 int 类型 
	//3. (int, int) 表示 该函数指针指向的函数形参是接收两个 int 
	//4. 在定义函数指针时,也可以写上形参名 int (*pmax)(int x, int y) = max; 
	int (*pmax)(int , int ) = max; // 
	printf("Input two numbers:"); 
	scanf("%d %d", &x, &y); 
	
	// (*pmax)(x, y) 通过函数指针去调用 函数 max 
	maxVal = (*pmax)(x, y); 
	printf("Max value: %d pmax=%p pmax 本身的地址=%p\n", maxVal, pmax, &pmax);
	
	return 0; 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值