c语言定义函数指针和typedef简写

c语言定义函数指针和typedef简写

  二种方法来定义函数指针

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<Windows.h>
 4 
 5 int add(int a, int b)
 6 {
 7     return a + b;
 8 }
 9 
10 //void msg(char s[])
11 //void (*p)(char s[]) 函数指针的定义方法
12 //void (*)(char *s)   函数指针的类型
13 
14 void msg(char s[])
15 {
16     MessageBoxA(0,s,s,0);
17 }
18 
19 
20 void main()
21 {
22     //方法1
23     //定义函数指针的规则
24     //1.先把函数拿过来  int add(int a, int b) , add就是一个地址
25     //2.把函数名挖空    int (*p)(int a,int b);
26     int(*padd)(int a, int b); //函数指针
27     //3.赋值
28     padd = add;
29     printf("%d", padd(11, 19));//30
30 
31     //方法2.直接初始化
32     void(*pmsg)(char s[]) = msg; //定义函数指针并初始化
33     pmsg("心里的雨倾盆的下");
34 
35     getchar();
36 }

   通过typedef构建

 1 //使用typedef给函数指针类型一个别名
 2 //typedef没有定义新的类型,给已经有的类型起一个别名,减少输入
 3 typedef int(*PADD)(int a, int b); //*类型, PADD存储函数地址
 4 typedef void(*MEG)(char s[]);
 5 
 6 void main()
 7 {
 8     PADD padd1 = add; //创建函数指针
 9     printf("%d",padd1(11,23));
10     
11     MEG meg1 = msg;
12     meg1("心里的雨倾盆的下");
13 
14     getchar();
15 }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/108909.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ArcGIS二次开发基础教程(09):叠加分析

    ArcGIS二次开发基础教程(09):叠加分析ArcGIS二次开发基础教程(09):叠加分析缓冲区分析的概念及原理请查看帮助文档http://desktop.arcgis.com/zh-cn/arcmap/latest/tools/analysis-toolbox/how-buffer-analysis-works.htm缓冲区分析//实现对图层中所有点要素进行缓冲分析IGraphicsContainergraphicsConta…

  • DDPG存疑

    DDPG存疑存疑的点:value函数的参数是(s,a)。离散状态下s,a作为横纵坐标来获取Q值。q-learningDQN情况下,输出的是最大Q值。PG里面输出的是action的概率分布。DDPG里,actor网络输出的是Action。critic网络里输出的是Q值,依然和s,a有关,由s,a确定。只不过这里确定的方式是①将s,a分别经过一个输出维度为30的网络后 得到的值 相加(两个网络分别为:(s_dim,30)(a_dim,30)。②将s,a维度拼接再经过网络计算(这个网络的维度是(s_d

  • [ Laravel 5.1 文档 ] 服务 —— 帮助函数

    [ Laravel 5.1 文档 ] 服务 —— 帮助函数

    2021年10月23日
  • random.nextint java_实例讲解Java中random.nextInt()与Math.random()的基础用法

    random.nextint java_实例讲解Java中random.nextInt()与Math.random()的基础用法1、来源random.nextInt()为java.util.Random类中的方法;Math.random()为java.lang.Math类中的静态方法。2、用法产生0-n的伪随机数(伪随机数参看最后注解)://两种生成对象方式:带种子和不带种子(两种方式的区别见注解)Randomrandom=newRandom();Integerres=random.nextInt…

  • dos命令进入d盘文件夹(windows cd到d盘)

    如何运行命令提示符,然后使用CD命令进入制定文件夹在win系统下进入命令提示符的方式是在开始的输入框中输入“cmd”,然后按“enter”进入。cd为进入的命令。具体步骤如下:步骤一:在pc端主界面中点击“开始”菜单栏,输入“cmd”,按“enter”进入命令提示符界面。步骤二:使用cd命令进入e盘。如何运行命令提示符,然后使用CD命令进入制定文件夹?使用CD命令进入指定文件?比如在桌面文…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号