C语言中typedf函数的用法,C语言中typedef用法详解
在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用法详解相关推荐
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
关于C++中函数指针的使用(包含对typedef用法的讨论) (一)简单的函数指针的应用. //形式1:返回类型(*函数名)(参数表) char (*pFun)(int); char glFun(in ...
- C++友元函数和友元类(C++ friend)详解
在看VISP视觉库的时候遇到友元函数: Friends void swap (vpDetectorAprilTag &o1, vpDetectorAprilTag &o2) 在定义一个 ...
- php根据元素返回可以,array_search()函数按元素值返回键名步骤详解
这次给大家带来array_search()函数按元素值返回键名步骤详解,array_search()函数按元素值返回键名的注意事项有哪些,下面就是实战案例,一起来看一下. array_search() ...
- php判断参数_php检查函数必传参数是否存在的实例详解
php检查函数必传参数是否存在的实例详解 在php实际编程中,接口经常会接收到前端传来的参数,其中有些参数不是必传的,有些参数是必传的,如何"检查函数必传参数是否存在"呢?为了解决 ...
- 第十一章 文件操作_C语言fopen函数的用法,C语言打开文件详解
在C语言中,操作文件之前必须先打开文件:所谓"打开文件",就是让程序和文件建立连接的过程. 打开文件之后,程序可以得到文件的相关信息,例如大小.类型.权限.创建者.更新时间等.在后 ...
- C语言fopen函数的用法,C语言打开文件详解
在C语言中,操作文件之前必须先打开文件:所谓"打开文件",就是让程序和文件建立连接的过程. 打开文件之后,程序可以得到文件的相关信息,例如大小.类型.权限.创建者.更新时间等.在后 ...
- python的fopen函数_C语言fopen函数的用法,C语言打开文件详解
在C语言中,操作文件之前必须先打开文件:所谓"打开文件",就是让程序和文件建立连接的过程. 打开文件之后,程序可以得到文件的相关信息,例如大小.类型.权限.创建者.更新时间等.在后 ...
- php中的where用法,ThinkPHP中where()使用方法详解
本文介绍thinkphp的where()方法的用法.where方法可以用于对数据库操作的结果进行筛选.即sql查询语句中的where子句. 今天来给大家讲下查询最常用但也是最复杂的where方法,wh ...
- python中sort函数字符串_python中的sort方法使用详解
< Python树莓派编程>--3.3 Python入门 本节书摘来自华章出版社<Python树莓派编程>一书中的第3章,第3.3节,作者:[美]沃尔弗拉姆·多纳特(Wolfr ...
- python函数中可变参数的传递方式是_详解Python函数可变参数定义及其参数传递方式...
Python函数可变参数定义及其参数传递方式详解 python中 函数不定参数的定义形式如下 1. func(*args) 传入的参数为以元组形式存在args中,如: def func(*args): ...
最新文章
- QoS、IPv6、软交换和VoIP技术受质疑
- ASA 过滤 URL (图解)
- Zedboard学习(五):MIO与EMIO操作
- Java操作Excel中HSSFCell.CELL_TYPE_STRING、BOOLEAN、NUMERIC无定义解决方法
- matlab概率及数理统计学习-T检验、卡方检验、直方图分布检验
- 数据科学 IPython 笔记本 8.6 可视化误差
- 机器学习技法2-Dual Support Vector Machine
- cscd论坛_高压电器第九届电工技术前沿问题学术论坛“先进电磁技术”分论坛及专题征稿...
- 模态框 modal.js
- 认识计算机拓扑结构图,认识一下网络拓扑,几张图片几条线。
- 安卓 控件靠右对齐_LinearLayout中组件右对齐
- 投资学U14 债券的估值和收益率 习题解读
- 获取用户手机号码解析失败,微信小程序授权登录获取token步骤
- TX1刷机教程(安装caffe、cuda/cudnn)
- 2021年中国网络安全硬件市场竞争格局分析:深信服、新华三、启明星辰优势明显[图]
- Python 图片数据MYSQL存取(BASE64编码解码)
- R包 splatter
- win2012 加域_Windows Server 2012 域设置及客户端加入
- 从Servlet到SpringMVC演变过程详解(ServletContext 和WebApplicationContext, ApplicationContext给你安排上了)
- 吉首大学第九届"新星杯"大学生程序设计大赛(重现赛)
热门文章
- 照片做成视频的软件手机上用照片做成视频
- CMD中获取命令返回值
- 关于Python user32.dll SetWindowPos调用无效的问题的解决方案
- pc联想电脑下载最快的方法网站
- 好书推荐——《python编程》第四版
- android 直播流的播放,为什么Android的MediaPlayer需要这么长时间才能准备一些直播流进行播放?...
- 天使与恶魔~“增值服务”
- SpringCloud SpringBoot uniapp vue b2b2c 微服务 多商家入驻直播带货商城 分销商城 秒杀 高并发电商之适配器模式
- 【安装配置RocketMQ】
- FMD基于视觉的材料识别数据集