C及C++中typedef的简单使用介绍

 更新时间:2016年10月10日 08:42:10   作者:Dmego  
C/C++中关键字typedef的理解不是多透彻,今天小编抽空给大家分享下C及C++中typedef的简单使用介绍,需要的朋友可以参考下

typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。

在编程中使用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类型的地方都要改,程序越大,工作量越大。

以上所述是小编给大家介绍的C及C++中typedef的简单使用介绍,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • C++继承和动态内存分配

    C++继承和动态内存分配

    这篇文章主要介绍了C++继承和动态内存分配,当我们的基类使用动态内存分配,并且重新定义赋值和复制构造函数,这会对派生类的实现有什么影响呢?我们带罩疑问俩姐下面文章内容吧
    2022-01-01
  • C/C++浅析邻接表拓扑排序算法的实现

    C/C++浅析邻接表拓扑排序算法的实现

    这篇文章主要介绍了C/C++对于邻接表拓扑排序算法的实现,邻接表是图的一种链式存储方法,其数据结构包括两部分:节点和邻接点
    2022-07-07
  • C语言实现设备管理系统

    C语言实现设备管理系统

    这篇文章主要为大家详细介绍了C语言实现设备管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • C++中高性能内存池的实现详解

    C++中高性能内存池的实现详解

    在 C/C++ 中,内存管理是一个非常棘手的问题,我们在编写一个程序的时候几乎不可避免的要遇到内存的分配逻辑。本文将通过C++实现高性能内存池,感兴趣的可以了解一下
    2022-10-10
  • c++双向链表操作示例(创建双向链、双向链表中查找数据、插入数据等)

    c++双向链表操作示例(创建双向链、双向链表中查找数据、插入数据等)

    这篇文章主要介绍了c++双向链表操作示例,包括创建双向链、删除双向链表、双向链表中查找数据、插入数据等,需要的朋友可以参考下
    2014-05-05
  • C语言约瑟夫环的实现

    C语言约瑟夫环的实现

    这篇文章主要介绍了C语言约瑟夫环的实现的相关资料,这里主要是利用数据数据结果中循环链表来实现,需要的朋友可以参考下
    2017-08-08
  • C++ 三种继承方式及好处示例详解

    C++ 三种继承方式及好处示例详解

    这篇文章主要为大家介绍了C++ 三种继承方式及好处示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Linux下用C语言实现推箱子游戏

    Linux下用C语言实现推箱子游戏

    这篇文章主要为大家详细介绍了Linux下用C语言实现小老鼠推箱子的游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • 浅谈C++基类的析构函数为虚函数

    浅谈C++基类的析构函数为虚函数

    本文重点:应该为多态基类声明虚析构器。一旦一个类包含虚函数,它就应该包含一个虚析构器。如果一个类不用作基类或者不需具有多态性,便不应该为它声明虚析构器。
    2015-10-10

最新评论