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的简单使用指南相关推荐

  1. php中去空函数trim,PHP中trim()函数简单使用指南

    string trim ( string $str [, string $charlist ] ) - 去除字符串首尾处的空白字符(或者其他字符) trim()函数当第二个参数为空时,默认去掉空格.制 ...

  2. c/c++中typedef详解(此文对typedef用于结构体的定义说明得很清楚到位)

    1. typedef 最简单使用 [c-sharp] view plain copy typedef long byte_4; // 给已知数据类型long起个新名字,叫byte_4 你可以在任何需要 ...

  3. django中使用celery简单介绍

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 本章节我们重点在于实现,如何存储任务的结果. 我们将任务函数改为: from celery_demo.celery im ...

  4. python tkinter库、添加gui界面_使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)...

    使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二),创建一个,界面,布局,文件,路径 使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二) ...

  5. Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5个样本)——概率预测

    Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5个样本)--概率预测 目录 输出结果 核心代码 输出结果 核心代码 # -*- coding: ...

  6. Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5+1个样本)——类别预测

    Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5+1个样本)--类别预测 目录 输出结果 核心代码 输出结果 核心代码 # -*- codin ...

  7. MySQL中SELECT语句简单使用

    MySQL中SELECT语句简单使用 最近开始复习mysql,查漏补缺吧. 关于mysql 1.MySQL不区分大小写,但是在MySQL 4.1及之前的版本中,数据库名.表名.列名这些标识符默认是区分 ...

  8. python中print的用法_Python中print函数简单使用总结

    Python中print函数简单使用总结 print函数是Python的入门,每一个学习python的人都绕不开这个函数,下面介绍一下这个函数的用法. 打开电脑,选择python软件,下面选择pyth ...

  9. Eclipse中tomcat的简单配置

    Eclipse中tomcat的简单配置 将Eclipse与tomcat相关联 如果下拉选项中没有jdk1.8.0_131,就点击后面的选项 把服务器视图调出来,方便之后调试 将tomcat服务器调入 ...

最新文章

  1. stm32f103zet6linux,stm32f103zet6定时器详解及应用
  2. MatConvnet工具箱文档翻译理解(1)
  3. ReentrantLock源码
  4. 安卓案例:使用MPAndroidChart绘制饼状图、柱状图和折线图
  5. 你竟是这样的月饼-今年中秋节折腾的月饼2.0
  6. 夜间模式(模仿喜马拉雅FM)
  7. Tomcat servers.xml 无注释版
  8. Item 10.const成员函数 (Meaning of a Const Member Function)
  9. 4W家庭理财 V2.0
  10. WIN10更新后遗症+解决方案2——Solidworks注册机闪退
  11. 2022-2028年中国锂锰电池行业市场调查及未来前景预测报告
  12. 大三计算机写学术论文,学院大三本科生在高水平国际会议发表学术论文
  13. 如何处理表情字符入库问题
  14. Window XP驱动开发(二) 环境搭建(VS2008+WDK+DDKWzard)及示例源码分析
  15. 西安交通大学计算机组成原理实验,西安交通大学计算机组成原理专题实验(上)第一次实验报告.pdf...
  16. 关于捕捞所有宝物的最小消耗体力量的问题
  17. 【数据库架构】什么是 OLTP?
  18. 手工测试点点点,测着测着,找前台小姐姐看电影去了···
  19. uni-app/微信小程序 解析 json 数据(thinkphp6),跨域问题
  20. Android Studio 简易通讯录制作 (Java)

热门文章

  1. C#动态属性(.NET Framework4.5支持)
  2. 人工智能中对机器学非常简要的介绍
  3. Caffe上训练使用自己的数据
  4. 撑起整个互联网的7大开源技术
  5. 2019最新 iOS Native项目集成Unity3D
  6. linux 更新yum源 改成阿里云源
  7. Rancher Labs赋能合作伙伴抢滩容器市场
  8. 记录一次最新版MySQL-server-5.6.20-1.el6.x86_64.rpm的安装
  9. 又一轮电邮中间人攻击来袭 企业如何自保?
  10. wpf prism IRegionManager 和IRegionViewRegistry