1.0关于typedef关键字的基础:

  https://www.cnblogs.com/anSn/p/8783347.html

1.1 typedef 修饰“函数类型” 的调用方法:

1)我们写一段普通的函数调用:

#include<stdio.h>
int add(int a,int b); void main()
{
int d=;
d=add(,);
printf("d=%d\n",d);
}
int add(int a,int b)
{
return a+b;
}

  运行结果如下:

  

2)我们引入typedef去修饰“函数函数类型”,并调用起来:

#include<stdio.h>
typedef int fun(int,int); fun add;//等价 int add(int a,int b);
void main()
{
int d=;
d=add(,);
printf("d=%d\n",d);
}
int add(int a,int b)
{
return a+b;
}

运行结果如下:

  

1.2  typedef修饰“函数指针类型”的调用方法:

1)首先,不引入typedef,写一段函数指针的定义,并指向一个函数调用起来:

#include<stdio.h>

int add(int a,int b);

int main()
{
int d=;
int (*p)(int,int);//定义一个函数指针。 p=add;//指针P指向一个函数地址 也可以p=&add; 结果一致的
d=p(,);//用指针调起函数 printf("d=%d\n",d);
return ;
}
int add(int a,int b)
{ return a+b;
}

运行结果如下:

2)引入typedef修饰“函数类型”,并结合指针构成函数指针后去调用函数:

#include<stdio.h>
typedef int fun(int,int);//给一个函数类型取一个别名,别名为fun int add(int a,int b); int main()
{
int d=;
fun *p;//int (*p)(int,int);//定义一个函数指针。 p=add;//指针P指向一个函数地址
d=p(,);//用指针调起函数 printf("d=%d\n",d);
return ;
}
int add(int a,int b)
{ return a+b;
}

运行结果如下:

3)typedef直接修饰“函数指针类型”,指向一个函数并调用起来:

#include<stdio.h>
typedef int (*fun)(int,int);//给一个“函数指针类型”取一个别名,别名为fun int add(int a,int b); int main()
{
int d=;
fun p;//int (*p)(int,int);//定义一个函数指针。 p=add;//指针P指向一个函数地址 也可以p=&add; 结果是一致的
d=p(,);//用指针调起函数 此为显示调用, 隐示调用为d=(*p)(1,2);两者结果是一致的。 printf("d=%d\n",d);
return ;
}
int add(int a,int b)
{ return a+b;
}

4)拓展:

 把一串代表函数入口地址的整形数 强转 成 “函数指针类型”,并送实参进行调用:

#include<stdio.h>
int add(int a,int b); void main()
{
int d=; printf("add函数的入口地址为:%p\n",add); //add 0x00401005 d=((int (*)(int,int))0x00401005)(,);//函数调用。等价d=add(1,9);
//0x00401005 是一个整型地址,先把它强转成函数指针类型 :int (*)(int,int),再送参数进行调用 printf("d=%d\n",d);
}
int add(int a,int b)
{
printf("add被执行了");
return a+b;
}

运行结果如下:

C之typedef应用的更多相关文章

  1. 19-typedef

    本文目录 一.typedef作用简介 二.typedef与指针 三.typedef与结构体 三.typedef与指向结构体的指针 四.typedef与枚举类型 五.typedef与指向函数的指针 六. ...

  2. #define与typedef在重定义类型中的区别

    #define 为完全的替换 typedef 重新定一个数据类型 eg #define charp1 char* typedef char* charp2charp1 a,b; //a char* b ...

  3. typedef

    第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, ...

  4. 用typedef定义函数指针的问题

    在学习windows API的时候,遇到下面这段代码   以前见过的typedef的用法都是给一个数据类型取一个别名 typedef oldTypeName newTypeName   这种给数据类型 ...

  5. C语言语法 typedef小结

    在总结typedef之前,先了解一个专业术语: 常量指针(const pointer):常量指针在定义的时候必须被初始化,而且一旦初始化完成,则它的值就不能再改变. int errNumb = 0; ...

  6. 如何理解typedef void (*pfun)(void)

    问题: 在刚接触typedef void (*pfun)(void) 这个结构的时候,存在疑惑,为什么typedef后只有一"块"东西,而不是两"块"东西呢?那 ...

  7. C及C++中typedef的简单使用指南

    又是在学数据结构的时候,发现了之前学习的知识遗忘很多,在发现对C/C++中关键字typedef的理解还是没有到位后,我翻阅了学C++用到的课本,又问了度娘,也看了不少关于typedef用法的博客.于是 ...

  8. [转]关于typedef的用法总结

    不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中.typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些 ...

  9. typedef 和 #define 的区别

    本文已迁移至: http://www.danfengcao.info/c/c++/2014/02/25/difference-between-define-and-typedef.html typed ...

  10. [转载]彻底弄清struct和typedef struct

    struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int ...

随机推荐

  1. Nginx 所使用的 epoll 模型是什么?

    对于 Nginx,相信有过 Web 服务部署经验的同学都不陌生,它有以下特点: 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 相较于 A ...

  2. FLUENT不同求解器离散格式选择【转载】

    转载自:http://blog.163.com/wu_yangfeng/blog/static/16189737920104158950438/ 离散格式对求解器性能的影响 控制方程的扩散项一般采用中 ...

  3. ES6中的class类的理解

    传统的javascript中只有对象,没有类的概念.它是基于原型的面向对象语言.原型对象特点就是将自身的属性共享给新对象.这样的写法相对于其它传统面向对象语言来讲,很有一种独树一帜的感脚!非常容易让人 ...

  4. ubuntu之路——day10.1 ML的整体策略——正交化

    orthogonalization 正交化的概念就是指,将你可以调整的参数设置在不同的正交的维度上,调整其中一个参数,不会或几乎不会影响其他维度上的参数变化,这样在机器学习项目中,可以让你更容易更快速 ...

  5. HearthBuddy修改系统时间

    将以下代码保存在.bat文件,然后用管理员权限运行 pushd "%~dp0" #下面修改时间,根据操作系统的语言不同,会有不同的格式,比如2019-10-26date 10/26 ...

  6. scrapy 一些坑

    scrapy爬虫出现Forbidden by robots.txt # Obey robots.txt rulesROBOTSTXT_OBEY = False scrapy定时执行抓取任务 用cron ...

  7. MiniDLNA常用操作

    # MiniDLNA常用操作 ## 简介 多媒体共享服务器,类似于FTP,支持DLNA的客户端都可以看视频,听音乐,处于同一局域网就可以了 ## 管理 - 启动`systemctl start min ...

  8. Python3基础 keyword 查看所有的关键字

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  9. ASP将Table导出Excel

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><%if request("action") ...

  10. ROS tf基础使用知识

    博客参考:https://www.ncnynl.com/archives/201702/1306.html ROS与C++入门教程-tf-坐标变换 说明: 介绍在c++实现TF的坐标变换 概念: Co ...