首页 > 其他分享 >函数指针

函数指针

时间:2022-12-17 22:22:48浏览次数:40  
标签:函数 int signal Add 函数指针 void

函数指针:

指向该函数的指针

首先区别一下函数名与数组名的区别:

#include <stdio.h>
int Add(int x, int y)
{
    return x + y;
}
int main()
{

    printf("%p\n", &Add);
    printf("%p\n", Add);
    return 0;
}

根据以上代码得出

  • 数组名 != &数组名
  •  函数名 = &函数名

这里简单的测试下

#include <stdio.h>
int Add(int x, int y)
{
    return x + y;
}
int main()
{
    int a = 10;
    int b = 10;
    Add(a, b);
  int (*pf)(int, int) = Add;//pf====Add
    int ret = pf(3, 5);
    printf("%d\n", ret);return 0;
}

一些特殊代码的解读

1.

(*( void(*)())0)();
  1. 调用0地址处的函数
  2.  该函数无参,返回类型是void
  3.   void(*)()--函数指针类形
  4.  .(void(*)())0--对0进行强制类型转换,被解释为一个函数的地址
  5.  *(void(*)())0--对0地址进行了解引用操作
  6.  (*(void(*)())0)()--调用了地址处的函数

    //--<<c陷阱和缺陷>>

2.

void (*signal(int, void(*)(int)))(int);
  1. signal和()先结合,说明signal是函数名
  2.  signal函数的第一个参数的类形是int,第二个的类形是函数指针该函数指针,指向一个参数为int,返回类形是void的函数
  3.  signal函数的返回类型也是一个函数指针,该函数指针,指向一个参数为int,返回类形是void的函数

代码优化

typedef void(*pfun_t)(int);//对void(*)(int)的函数指针类形重命名为pfun_t
    pfun_t signal(int, pfun_t);

 

标签:函数,int,signal,Add,函数指针,void
From: https://www.cnblogs.com/qiyuancc/p/16989666.html

相关文章

  • 【C语言】函数指针、函数指针数组、函数指针数组应用、指向函数指针数组指针。
     ......
  • c c++函数指针 Tutorials
    ​​http://www.newty.de/fpt/index.html​​Callbacks,functionpointersTheFunctionPointerTutorialsbyLarsHaendel:​​http://www.newty.de/fpt/index.html​......
  • C void* 函数指针
      函数指针能够很方处理重复性工作,简化代码逻辑. 在C语言函数指针一般用于回调,传递函数名, 当数据回来时,执行函数指针所指向函数.  下面看函数指针在计算器程序......
  • 类成员函数指针
    类成员函数指针 播报编辑讨论上传视频向函数的指针变量本词条由“科普中国”科学百科词条编写与应用工作项目 审核。函数指针是指向函数的指针变量。函数指针可......
  • 函数指针常用算法
    #include<stdio.h>voidfunc_int(void*a){printf("%d\n",*(int*)a);//输出int类型,注意void*转化为int}voidfunc_double(void*b){printf("%.2f\n",*(do......
  • 函数指针数组
    /* Function:函数指针数组*/#include<stdio.h>#include<stdlib.h>intfunc1(intn){printf("func1:%d\n",n);returnn;}intfunc2(intn){......
  • 调用函数指针
    /* DesignModel:设计模式 Function:使用函数指针列表搭建程序框架*/#include<stdio.h>#include<stdlib.h>inthello(inti);voidhey(inti);intsomeother(vo......
  • 函数指针
     1#include<cstdio>2#include<iostream>3usingnamespacestd;4intmax(intx,inty)5{6returnx>y?x:y;7}8intmain()9{10int......
  • 函数指针和指针函数
    函数指针和指针函数的区别一、函数指针本质上是一个指针,它指向的是一个函数的地址。1.如何定义一个函数指针:void(*p2)(inta,intb);函数指针是专用的。格式要求很......
  • c++ 函数指针
    函数指针是指向函数的指针。指针的类型由它的返回类型和形参类型共同决定。例如bool(*Pf)(conststring&,conststring&);pf指向一个函数,函数的参数是两个string......