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 }

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows 强制删除文件夹 不提示确认

    windows 强制删除文件夹 不提示确认rd/s/qE:\apache-tomcat-6.0.41\apache-tomcat-6.0.41\webapps\concrete-platform-web

    2022年6月3日
    42
  • python解析json文件并提取_python读取文件并判断

    python解析json文件并提取_python读取文件并判断使用python读取json和大数据量的json.gz文件

    2022年10月9日
    3
  • Nexus3功能介绍

    Nexus3功能介绍1、BrowseServerContent1.1Search这个就是类似Maven仓库上的搜索功能,就是从私服上查找是否有哪些包。注意:在Search这级是支持模糊搜索的1.2Browse1.3Upload顾名思义就是上传jar包到私服中,可以选择其中一个hosted仓库。注意:通过页面直接上传的方式只是上传了jar包,若这个jar通过Mave…

    2022年7月12日
    13
  • datax(18):源码解读Transformer

    datax(18):源码解读Transformer现在很多场景都把datax当做ETL工具,datax中的各种reader相当于E(Extract),各种writer相当于L(load),那么datax中是否有T(transform)。答案是肯定的~一、概述transformer作用:在生产上数据传输,一般情况下只需要rw就行,但是有时候需要在中间过程做些操作,比如加解密、切割、拼接等等,这个时候就需要transform了。族谱datax中的transform有2个顶级祖宗,简单类型的Transformer和复杂类型的ComplexTran.

    2022年5月13日
    82
  • CDMA是什么意思_GPRS/CDMA

    CDMA是什么意思_GPRS/CDMA(1)2G网络:GSM(GlobalSystemForMobileCommunications)全球移动通信系统,GSM数字移动通信系统史源于欧洲,是欧洲电信标准组织制定的数字移动通信标准。它的空中接口采用时分多址技术。它是全球应用最广泛的移动电话标准。GSM较之它以前的标准最大的不同是它的信令和语音信道都是数字式的,因此GSM被看作是第二代(2G)移动电话系统。GSM数字…

    2022年9月27日
    2
  • eclipse导入Maven工程层级显示修改方法

    eclipse导入Maven工程层级显示修改方法最近换项目,在导入maven工程的时候发现导入显示的层级关系很不清楚,看的很不习惯,纠结半天之后发现应该如何处理。选择该项后会看到有两个选择,Flat和Hierarchical两个选择,这两个选项的意思分别是平铺与层级显示。将Flat改为Hierarchical即可。这时就变成层级显示了…

    2022年5月31日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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