C之typedef应用
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应用的更多相关文章
- 19-typedef
本文目录 一.typedef作用简介 二.typedef与指针 三.typedef与结构体 三.typedef与指向结构体的指针 四.typedef与枚举类型 五.typedef与指向函数的指针 六. ...
- #define与typedef在重定义类型中的区别
#define 为完全的替换 typedef 重新定一个数据类型 eg #define charp1 char* typedef char* charp2charp1 a,b; //a char* b ...
- typedef
第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, ...
- 用typedef定义函数指针的问题
在学习windows API的时候,遇到下面这段代码 以前见过的typedef的用法都是给一个数据类型取一个别名 typedef oldTypeName newTypeName 这种给数据类型 ...
- C语言语法 typedef小结
在总结typedef之前,先了解一个专业术语: 常量指针(const pointer):常量指针在定义的时候必须被初始化,而且一旦初始化完成,则它的值就不能再改变. int errNumb = 0; ...
- 如何理解typedef void (*pfun)(void)
问题: 在刚接触typedef void (*pfun)(void) 这个结构的时候,存在疑惑,为什么typedef后只有一"块"东西,而不是两"块"东西呢?那 ...
- C及C++中typedef的简单使用指南
又是在学数据结构的时候,发现了之前学习的知识遗忘很多,在发现对C/C++中关键字typedef的理解还是没有到位后,我翻阅了学C++用到的课本,又问了度娘,也看了不少关于typedef用法的博客.于是 ...
- [转]关于typedef的用法总结
不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中.typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些 ...
- typedef 和 #define 的区别
本文已迁移至: http://www.danfengcao.info/c/c++/2014/02/25/difference-between-define-and-typedef.html typed ...
- [转载]彻底弄清struct和typedef struct
struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int ...
随机推荐
- Bootstrap select 多选并获取选中的值
代码: <!DOCTYPE html><html> <head> <meta charset="UTF-8"> < ...
- iframe中用到的例子
<view:qrytr> <view:qrytd colspan="4"> <iframe id="ccbl&quo ...
- java.util之一:ArrayList
ArrayList是java中的线性结构的一种表示方法,在java中使用频率非常高,下面来一步一步分析其底层的实现.(JDK1.8) 一.构造函数 ArrayList的构造函数有三个,分别如下, 我们 ...
- name_scope与variable_scope 详解
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/lucky7213/article/deta ...
- delphi 二维数组的大小和元素个数问题
type TComplex = record Real : Single; Imag : Single; end; TKArray=array [1..2048,1..2048] of TComple ...
- GIS地理处理工具案例教程-成本距离
GIS地理处理工具案例教程-成本距离 关键词:最短路径,成本路径,最佳路径,最优路径,路径分析,选线分析 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq ...
- vs2017发布后宕机,没有响应解决方法
找到项目下:Properties\PublishProfiles 删除:FolderProfile.pubxml.user
- Vulnerability Scanning Tools
Category:Vulnerability Scanning Tools - OWASP https://www.owasp.org/index.php/Category:Vulnerability ...
- javaselenium遇到的问题和解决方法(还没试,遇到问题可以先看这里)
Firefox路径问题 firefox火狐浏览器去完成自动化测试时,代码报了如下错误: Cannot find firefox binary in PATH. mark sure firefox is ...
- 转 zabbix 优化方法 以及 后台数据库查询方法 两则
############sample 1 https://blog.51cto.com/sfzhang88/1558254 如何从Zabbix数据库中获取监控数据 sfzhang关注6人评论40627 ...