C语言与函数指针

                                                                                            C语言:函数指针

       函数指针是指指向一个函数的指针,函数其本质是一个跳转到一个代码区的地址,并把其函数调用的值压入栈,然后进行函数地址,往后执行其代码,而后返回 ,完成函数调用,所以可以暂时把函数理解为一串代码地址的入口,故可以用指针调用。

代码如下:

      

       #include<stdio.h>

#include<stdlib.h>

void func(void) {

    printf("func");

}

int main() {

 

    void(*f)(void);//定义一个参数为空且返回为空的函数指针

    printf("%p\n", func);

    f = func;//进行指向

    printf("%p\n", f);

    f();//函数调用

 

    system("pause");

    return 0;

}

运行结果:

函数调用解剖图:


其它相同结构的函数指针其结构基本相同,如形参为Int,返回为void、等等类型。

 

我们来看一个比较复杂的函数指针:

一个形参为void类型,并且返回一个int*类型,形参为void的函数指针的函数

#include<stdio.h>

#include<stdlib.h>

typedef int* (*func(void))(void);/*(*func(void))表示指明返回一个函数指针,且参数为void,其int*表示这个函数指针的返回类型(void)表示这个函数指针的参数 */

typedef int*(F)(void);

int*funct(void) {

    int*p = new int;

    return p;

}

F*function(void) {

    printf("function");

    F* f=funct;

    return f;

}

int main() {

    func * f = function;

    f();

 

 

 

 

 

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值