• C语言--关键字 typedef


    一、typedef

    1.基本使用

     1> typedef 在基本数据类型中的使用

      typedef int MyInt; // 相当于给 int 起了一个别名

      typedef MyInt MyInt2; // 相当于给 MyInt 起了一个别名

      MyInt a = 10; // MyInt相当于 int

      MyInt2 b = 12; // MyInt2相当于 int

     2> typedef 和指针在一起时的使用

      char *name = "jack";

      typedef char * string;//相当于给(char *)起了一个别名叫string

      string name1 = "jame";

     3> typedef和结构体在一起时的使用

       ①struct Date {int year; int month; int day};

      typedef struct Date MyDate;// 相当于给struct Date起了一个别名

       ②typedef truct Date {int year; int month; int day} MyDate;//另一种使用方式

         ③typedef truct  {int year; int month; int day} MyDate;//另一种使用方式

     4>  typedef和枚举在一起时的使用

      enum Sex {sexman,sexwoman,unknow};

      typedef enum Sex {sexMan,sexwoMan,unKnow} Mysex;//相当于给枚举类型起了  一个别名

      Mysex s = sexMan;//定义变量

     5> typedef和函数指针在一起时的使用

      int sum(int a, int b)

      {

        return a + b;

      }//首先定义一个函数

      int (*p)(int, int);//定义一个指向函数的指针类型

      typedef int (*MyPoint)(int, int);//给指向函数的指针类型起了一个别名叫MyPoint

      MyPoint p = sum;

     6> typedef和结构体指针在一起时的使用

      struct Date {int year; int month; int day};//定义了一个结构体类型

      struct Date d = {1990, 10, 10};//定义结构体变量

      struct Date *p = &d;//定义了一个指向结构体变量的指针

      typedef struct Date *DatePoint;

      DatePoint p2 = &d;

      typedef struct Date {int year; int month; int day} * DstePoint;//另一种定义方式

     7>总结

      ①作用:给已经存在的类型起一个新的名称

      ②使用场合:

       1)基本数据类型

       2)结构体

       3)指针

       4)枚举

       5)指向函数的指针

    2.使用注意

     1> typedef和宏定义同时使用,要注意宏定义是文本替换

      #denfine string2 char *

      type char * string;

      string s1,s2; //s1、s2都是char *类型

      string2 s3,s4; //s3是char *类型,s4是char类型;因为宏是文本替换

    二、自我总结

    1.typedef和define的不同

      宏定义只是简单的字符串代换(原地扩展),即纯文本替换,而typedef则不是原地扩展,它的新名字具有一定的封装性,它把复杂的数据类型简单化,以致于新命名的标识符具有更容易定义变量的功能。

      typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字。#define是预处理指令,作用在预处理阶段,即在代码变异成0和1之前。关键字typedef在编译阶段有效,由于是在编译阶段,因此typedef有类型检查的功能。

     *作用域不同

    #define没有作用域的限制,只要是之前预定义过的宏,在以后的程序中都可以使用。而typedef有自己的作用域

    执行时间不同

    Define则是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单而机械的字符串替换,而不进行任何检查。

    *功能不同

    Typedef用来定义类型的别名,这些类型不只包含内部类型(int,char等),还包括自定义类型(如struct),可以起到使类型易于记忆的功能

    综上:个人觉得typedef十分好用,可以将大量的代码瞬间变成你想要的代码,十分简便,且容易记忆。

  • 相关阅读:
    关于字符的C++函数
    VC6 LINK : fatal error LNK1168: cannot open Debug/Test.exe for writing
    1019 数字黑洞 (20)
    1015 德才论 (25)
    1013 数素数 (20)(20 分)
    1003 我要通过!(20)(20 分)
    今日目标
    MySQL单列索引和组合索引的区别
    Struts2中过滤器和拦截器的区别
    SQL 统计 字段 竖向转横向 (行转列)显示
  • 原文地址:https://www.cnblogs.com/smqh/p/4241483.html
Copyright © 2020-2023  润新知