在C语言中,经常有如下的用法:

typedef struct  tag{    ...} MyType, *MyPtr;

一旦通过如上定以后,就可以用MyType来定义struct tag结构了。

以前我使用typedef的时候,是按照其字面意思理解的,所以进入了一个误区。比如说我想定义MyInt为int类型,我用的代码如下:

typedef MyInt int;

我把上述代码理解为:定义MyInt类型为int。一切好像都是顺其自然的事情,但编译的时候才知道错误。

其实,在C语言中声明变量的时候,有个存储类型指示符(storage-class-specifier),它包括我们熟悉的

externstaticautoregister

在不指定存储类型指示符的时候,编译器会根据约定自动取缺省值。另外,存储类型指示符的位置也是任意的(但要求在变量名和指针*之前),也就是说以下几行代码是等价的:

static const int i;

const static int i;

int const static i;

const int static i;

根据C语言规范,在进行句法分析的时候,typedef和存储类型指示符是等价的!所以,我们把上述使用static的地方替换为typedef:

typedef const int i;

const typedef int i;

int const typedef i;

const int typedef i;

上述代码的语义是:将i定义为一个类型名,其等价的类型为const int。以后如果我们有i a;代码,就等价于const int a;

对于有指针的地方也是一样的,比如:

int const typedef *t;

那么代码

t p;

就相当于

int const *p;

另外,typedef不能和static等存储类型指示符同时使用,因为每个变量只能有一种存储类型,所以代码:

typedef static int i;

是非法的。

C语言中typedf函数的用法,C语言中typedef用法详解相关推荐

  1. 关于C++中函数指针的使用(包含对typedef用法的讨论)

    关于C++中函数指针的使用(包含对typedef用法的讨论) (一)简单的函数指针的应用. //形式1:返回类型(*函数名)(参数表) char (*pFun)(int); char glFun(in ...

  2. C++友元函数和友元类(C++ friend)详解

    在看VISP视觉库的时候遇到友元函数: Friends void swap (vpDetectorAprilTag &o1, vpDetectorAprilTag &o2) 在定义一个 ...

  3. php根据元素返回可以,array_search()函数按元素值返回键名步骤详解

    这次给大家带来array_search()函数按元素值返回键名步骤详解,array_search()函数按元素值返回键名的注意事项有哪些,下面就是实战案例,一起来看一下. array_search() ...

  4. php判断参数_php检查函数必传参数是否存在的实例详解

    php检查函数必传参数是否存在的实例详解 在php实际编程中,接口经常会接收到前端传来的参数,其中有些参数不是必传的,有些参数是必传的,如何"检查函数必传参数是否存在"呢?为了解决 ...

  5. 第十一章 文件操作_C语言fopen函数的用法,C语言打开文件详解

    在C语言中,操作文件之前必须先打开文件:所谓"打开文件",就是让程序和文件建立连接的过程. 打开文件之后,程序可以得到文件的相关信息,例如大小.类型.权限.创建者.更新时间等.在后 ...

  6. C语言fopen函数的用法,C语言打开文件详解

    在C语言中,操作文件之前必须先打开文件:所谓"打开文件",就是让程序和文件建立连接的过程. 打开文件之后,程序可以得到文件的相关信息,例如大小.类型.权限.创建者.更新时间等.在后 ...

  7. python的fopen函数_C语言fopen函数的用法,C语言打开文件详解

    在C语言中,操作文件之前必须先打开文件:所谓"打开文件",就是让程序和文件建立连接的过程. 打开文件之后,程序可以得到文件的相关信息,例如大小.类型.权限.创建者.更新时间等.在后 ...

  8. php中的where用法,ThinkPHP中where()使用方法详解

    本文介绍thinkphp的where()方法的用法.where方法可以用于对数据库操作的结果进行筛选.即sql查询语句中的where子句. 今天来给大家讲下查询最常用但也是最复杂的where方法,wh ...

  9. python中sort函数字符串_python中的sort方法使用详解

    < Python树莓派编程>--3.3 Python入门 本节书摘来自华章出版社<Python树莓派编程>一书中的第3章,第3.3节,作者:[美]沃尔弗拉姆·多纳特(Wolfr ...

  10. python函数中可变参数的传递方式是_详解Python函数可变参数定义及其参数传递方式...

    Python函数可变参数定义及其参数传递方式详解 python中 函数不定参数的定义形式如下 1. func(*args) 传入的参数为以元组形式存在args中,如: def func(*args): ...

最新文章

  1. QoS、IPv6、软交换和VoIP技术受质疑
  2. ASA 过滤 URL (图解)
  3. Zedboard学习(五):MIO与EMIO操作
  4. Java操作Excel中HSSFCell.CELL_TYPE_STRING、BOOLEAN、NUMERIC无定义解决方法
  5. matlab概率及数理统计学习-T检验、卡方检验、直方图分布检验
  6. 数据科学 IPython 笔记本 8.6 可视化误差
  7. 机器学习技法2-Dual Support Vector Machine
  8. cscd论坛_高压电器第九届电工技术前沿问题学术论坛“先进电磁技术”分论坛及专题征稿...
  9. 模态框 modal.js
  10. 认识计算机拓扑结构图,认识一下网络拓扑,几张图片几条线。
  11. 安卓 控件靠右对齐_LinearLayout中组件右对齐
  12. 投资学U14 债券的估值和收益率 习题解读
  13. 获取用户手机号码解析失败,微信小程序授权登录获取token步骤
  14. TX1刷机教程(安装caffe、cuda/cudnn)
  15. 2021年中国网络安全硬件市场竞争格局分析:深信服、新华三、启明星辰优势明显[图]
  16. Python 图片数据MYSQL存取(BASE64编码解码)
  17. R包 splatter
  18. win2012 加域_Windows Server 2012 域设置及客户端加入
  19. 从Servlet到SpringMVC演变过程详解(ServletContext 和WebApplicationContext, ApplicationContext给你安排上了)
  20. 吉首大学第九届"新星杯"大学生程序设计大赛(重现赛)

热门文章

  1. 照片做成视频的软件手机上用照片做成视频
  2. CMD中获取命令返回值
  3. 关于Python user32.dll SetWindowPos调用无效的问题的解决方案
  4. pc联想电脑下载最快的方法网站
  5. 好书推荐——《python编程》第四版
  6. android 直播流的播放,为什么Android的MediaPlayer需要这么长时间才能准备一些直播流进行播放?...
  7. 天使与恶魔~“增值服务”
  8. SpringCloud SpringBoot uniapp vue b2b2c 微服务 多商家入驻直播带货商城 分销商城 秒杀 高并发电商之适配器模式
  9. 【安装配置RocketMQ】
  10. FMD基于视觉的材料识别数据集