C及C++中typedef的简单使用指南
C及C++中typedef的简单使用指南
又是在学数据结构的时候,发现了之前学习的知识遗忘很多,在发现对C/C++中关键字typedef的理解还是没有到位后,我翻阅了学C++用到的课本,又问了度娘,也看了不少关于typedef用法的博客。于是我就想把我理解的东西整理下来。
一.基本解释
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。
二.用法
(1)用typedef声明一个新类型名来代替已有的类型名。如:
typedef int Status //指定标识符Status代表int类型 typedef double DATE //指定标识符DATE代表double类型
这样下面代码等价:
int i; double j; Status i;DATE j;
(2)用typedef对数组类型起新名:
typedef int NUM[100];//声明NUM为整数数组类型,可以包含100个元素 NUM n;//定义n为包含100个整数元素的数组,n就是数组名
(3)对一个结构体类型声明一个新名字:
typedef struct //在struct之前用了关键字typedef,表示是声明新类型名 {int month;int day;int year; } TIME; //TIME是新类型名,但不是新类型,也不是结构体变量名
新声明的新类型名TIME代表上面指定的一个结构体类型,这样就可以用TIME定义该结构体变量,如:
TIME birthday; TIME *P //p是指向该结构体类型数据的指针
三.注意点
(1)用typedef只是对已经存在的类型增加一个类型名,而没有创造一个新的类型。只是增加了一个新名字,可以用该名字定义变量,比如使用上文中的Status定义变量i;则i变量的类型为int型。
(2)可以用typedef声明新类型名。但是不能用来定义变量
四.优点
使用typedef类型名,有利于程序的移植性。有时程序会依赖硬件特性。比如在某个C++系统用2个字节存一个int类型变量,用4个字节存一个long类型变量。而在另一个C++系统中以4个字节存放int类型变量。则把一个C++程序从一个用2个字节存一个int类型变量的C++系统移植到以4个字节存放int类型变量的C++系统时,如果原来用typedef声明int类型,则例如:
Typedef int INTEGER ; //原来这样写 Typedef long INTEGER ; //移植后可以改为这样
如果不是用typedef声明的,那每一处定义int类型的地方都要改,程序越大,工作量越大。
转载于:https://www.cnblogs.com/tsh292278/p/10481764.html
C及C++中typedef的简单使用指南相关推荐
- php中去空函数trim,PHP中trim()函数简单使用指南
string trim ( string $str [, string $charlist ] ) - 去除字符串首尾处的空白字符(或者其他字符) trim()函数当第二个参数为空时,默认去掉空格.制 ...
- c/c++中typedef详解(此文对typedef用于结构体的定义说明得很清楚到位)
1. typedef 最简单使用 [c-sharp] view plain copy typedef long byte_4; // 给已知数据类型long起个新名字,叫byte_4 你可以在任何需要 ...
- django中使用celery简单介绍
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 本章节我们重点在于实现,如何存储任务的结果. 我们将任务函数改为: from celery_demo.celery im ...
- python tkinter库、添加gui界面_使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)...
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二),创建一个,界面,布局,文件,路径 使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二) ...
- Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5个样本)——概率预测
Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5个样本)--概率预测 目录 输出结果 核心代码 输出结果 核心代码 # -*- coding: ...
- Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5+1个样本)——类别预测
Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5+1个样本)--类别预测 目录 输出结果 核心代码 输出结果 核心代码 # -*- codin ...
- MySQL中SELECT语句简单使用
MySQL中SELECT语句简单使用 最近开始复习mysql,查漏补缺吧. 关于mysql 1.MySQL不区分大小写,但是在MySQL 4.1及之前的版本中,数据库名.表名.列名这些标识符默认是区分 ...
- python中print的用法_Python中print函数简单使用总结
Python中print函数简单使用总结 print函数是Python的入门,每一个学习python的人都绕不开这个函数,下面介绍一下这个函数的用法. 打开电脑,选择python软件,下面选择pyth ...
- Eclipse中tomcat的简单配置
Eclipse中tomcat的简单配置 将Eclipse与tomcat相关联 如果下拉选项中没有jdk1.8.0_131,就点击后面的选项 把服务器视图调出来,方便之后调试 将tomcat服务器调入 ...
最新文章
- stm32f103zet6linux,stm32f103zet6定时器详解及应用
- MatConvnet工具箱文档翻译理解(1)
- ReentrantLock源码
- 安卓案例:使用MPAndroidChart绘制饼状图、柱状图和折线图
- 你竟是这样的月饼-今年中秋节折腾的月饼2.0
- 夜间模式(模仿喜马拉雅FM)
- Tomcat servers.xml 无注释版
- Item 10.const成员函数 (Meaning of a Const Member Function)
- 4W家庭理财 V2.0
- WIN10更新后遗症+解决方案2——Solidworks注册机闪退
- 2022-2028年中国锂锰电池行业市场调查及未来前景预测报告
- 大三计算机写学术论文,学院大三本科生在高水平国际会议发表学术论文
- 如何处理表情字符入库问题
- Window XP驱动开发(二) 环境搭建(VS2008+WDK+DDKWzard)及示例源码分析
- 西安交通大学计算机组成原理实验,西安交通大学计算机组成原理专题实验(上)第一次实验报告.pdf...
- 关于捕捞所有宝物的最小消耗体力量的问题
- 【数据库架构】什么是 OLTP?
- 手工测试点点点,测着测着,找前台小姐姐看电影去了···
- uni-app/微信小程序 解析 json 数据(thinkphp6),跨域问题
- Android Studio 简易通讯录制作 (Java)
热门文章
- C#动态属性(.NET Framework4.5支持)
- 人工智能中对机器学非常简要的介绍
- Caffe上训练使用自己的数据
- 撑起整个互联网的7大开源技术
- 2019最新 iOS Native项目集成Unity3D
- linux 更新yum源 改成阿里云源
- Rancher Labs赋能合作伙伴抢滩容器市场
- 记录一次最新版MySQL-server-5.6.20-1.el6.x86_64.rpm的安装
- 又一轮电邮中间人攻击来袭 企业如何自保?
- wpf prism IRegionManager 和IRegionViewRegistry