C语言指针的函数引用用法,c语言的函数内存分配及指针函数的用法

程序中定义了一个函数,在编译时,编译系统会为函数代码分配一段存储空间,这段存储空间的起始地址称为这个函数的指针。关于系统为函数分配内存的情况,度娘的答案如下:当源码被编译成二进制文件后,其中的变量,函数的虚拟地址,也就是内存空间中的地址就已确定,在运行时,操作系统为其分配物理内存并添加虚拟地址到物理地址的映射。

一个进程(运行的程序)可分为若干段:代码段、数据段、堆栈段等,其中函数所操作的空间(也就是局部变量的空间)就位于堆栈段,所谓函数分配内存大小,实际就是堆栈段指针的变化而已。

函数指针例子如下:

#include

int main()

{

int max(int ,int);

int (*p)(int ,int);

int a,b,c;

p=max;

scanf("%d,%d",&a,&b);

c=(*p)(a,b);

return 0;

}

int max(int x,int y)

{

return x>y?x:y;;

}

由例子可见,指向函数的指针变量定义方式为:类型名(*指针变量)(函数参数表列);

需要注意的是:1、指向函数的指针变量只能指向在定义时指定的类型的函数,如*p与max函数类型都为int

2、要用指针调用函数,应先使指针变量指向该函数,如p=max;

3、在给函数指针变量赋值时,只需给出函数名不必给出参数

4、指向函数的指针变量不能进行算术运算,如p++,p+n等均不合法

5、用函数指针变量调用函数时,只需将(*p)代替函数名即可,如c=(*p)(a,b);

使用函数指针变量的好处:用函数名调用函数,则只能调用所指定的一个函数,而通过指针变量调用函数比较灵活,可根据不同情况先后调用不同函数

例子如下:

#include

int main()

{

int max(int ,int);

int min(int ,int);

int (*p)(int ,int);

int a,b,c,n;

scanf("%d,%d",&a,&b);

printf("please input 1 or 2:");

scanf("%d",&n);

if(n==1) p=max;

else if(n==2) p=min;

c=(*p)(a,b);

return 0;

}

int max(int x,int y)

{

return x>y?x:y;;

}

int min(int x,int y)

{

return x>y?y:x;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值