1.函数指针和指针函数

1.函数指针

在将程序装入内存后,每个函数都要占用一段连续的内存区域,而函数名就是这段内存区域的首地址(或称函数的入口地址),在C语言中可以把某个函数的首地址赋给一个指针变量,使之指向该函数,然后通过这个指针变量调用该函数。习惯上可以把这种指向该函数的指针变量称为“函数指针变量”,简称函数指针。

形式:类型标识符 (*指针变量名)(类型标识符1,..,类型标识符2)

例如:int (*pf)(int,int *):表示pf是一个指向函数的指针变量,所指向函数的返回值为整型,且具有两个参数,依次为整型和指针型

举栗:

#include<stdio.h>
int max(int a,int b)
{
if(a>b)	return a;
else return b;
}
void main()
{
int (*pmax)(int a,int b);//函数指针定义为一个指向一个返回值为整型,有两个参数并且两个参数的类型都是整型的函数/pmax是一个指针变量,指向返回值为整型的函数
int x,y,z;
pmax=max;//pmax指向函数max
printf("Input two numbers:\n");
scanf("%d %d",&x,&y);
z=(*pmax)(x,y);//调用Pmax所指向的函数max,返回一个整型值赋给z
printf("maxnum=%d\n",z);
}
注意:在这里*不应该理解为指针运算符,在此处它只是一种指示符号
运行结果:


2.指针函数

函数类型是指函数返回直的类型,在C语言中允许函数的返回值是一个指针(即地址),并把这种返回指针值的函数称为指针函数。

形式:类型标识符 *函数名(形参表)//也可以写成 :  类型标识符* 函数名(形参表)

例如:int *ap(int x,int y){}:表示ap是一个指针函数,其返回的指针指向一个整型变量

举栗:

#include <stdio.h>
int* fun(int*,int*);
/*也可以写成如下形式:int *fun(int *,int *)*/
void main()
{
int *p,i,j;
printf("Input two numbers:\n");
scanf("%d %d",&i,&j);
p=fun(&i,&j);// 调用函数fun,返回地址值并赋给p
printf("i=%d,j=%d\n",i,j);
printf("*p is the max:%d\n",*p);
}
int* fun(int* a,int* b)
{
if(*a>*b) return a;
else return b;
}
运行结果:


注意:int (*p)(),表示p是一个指向函数入口地址的指针变量(函数指针),该函数的返回值为整型数据

        int* p(),表示p是一个指针函数,其返回值是一个指向整型数据的指针。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值