zoukankan      html  css  js  c++  java
  • Typedef

    c语言中此关键字用来定义自己习惯的数据类型名称,可以替换系统默认的类型名称、结构体、共用体、枚举类型等。

    用法

    1、为基本数据类型定义类型名

    typedef unsigned int COUNT;

    使用COUNT替换unsigned int

    2、为自定义的数据类型(结构体、公用体、枚举类型)定义简洁的类型名称

    struct Point
    {
        double x;
        double y;
        double z;
    };
    此结构体使用的时候,需用如下方式调用
    struct Point oPoint1={100,100,0};
    struct Point oPoint2;
    可使用typedef关键字定义新的名称
    typedef struct tagPoint
    {
        double x;
        double y;
        double z;
    } Point;

    这个Point就是这个结构体的别名。

    3、为数组定义简洁的类型名称

    typedef int vector[10];

    语句定义了一个元素类型为int,含有10个元素的数组类型vector,若不使用typedef保留字,则就变成了数组定义,它只定义了一个元素类型为int、含有10个元素的数组vector。这两种定义有着本质的区别,若定义的是数组vector,系统将为它分配有保存10个整数的存储单元,共40个字节的存储空间;若定义的是数组类型vector,系统只是把该类型的有关信息登记下来,待以后利用该类型定义对象时使用,具体地说,就是把vector的元素类型int,类型长度10,类型名vectoe等登记下来,待以后定义vector类型的对象时使用。

    可以按如下方法使用

    vector v1,v2;

    这条语句定义了vector类型的两个对象v1和v2,每个对象都是vector类型的一个数组,每个数组由10个整型元素所组成。

    4、为指针定义简洁的名称

    1. typedef char* PCHAR;
    2. PCHAR pa;

     对于上面这种简单的变量声明,使用 typedef 来定义一个新的别名或许会感觉意义不大,但在比较复杂的变量声明中,typedef 的优势马上就体现出来了,如下面的示例代码所示:

      // PFun是我们创建的一个类型别名

      typedef int *(*PFun)(int,char*);

      // 使用定义的新类型来声明对象,等价于int*(*a[5])(int,char*)

      PFun a[5];

    综上所述:typedef就是用来定义别名的,和define存替换有很大差别,typedef定义的别名在编写代码时就会报错。

  • 相关阅读:
    phpcms 短信替换
    phpcms 搭建宣传网站首页
    JDK 8
    MySQL 5.6 date 与 string 的转换和比较
    Illustration of Git branching and merge
    Anti-pattern(反模式)
    Design Patterns笔记
    MyBatis小抄
    MyBatis MapperScannerConfigurer
    MyBatis 批量插入数据对插入记录数的限制
  • 原文地址:https://www.cnblogs.com/geekj/p/10629772.html
Copyright © 2011-2022 走看看