一、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语言--关键字 typedef的更多相关文章

  1. (转)[C++语法] 关键字typedef用法

    转自http://www.cnblogs.com/SweetDream/archive/2006/05/10/395921.html C/C++语言中的typedef相信大家已经不陌生,本文对C/C+ ...

  2. C语言关键字—-sizeof 、typedef、const、static、register、extern、#define

    关键字:sizeof .#define.typedef.const.static.register.extern sizeof 1. 作用:求数据所占得内存空间大小 2. 本质:求数据得类型所占的内存 ...

  3. FILE不是C语言关键字

    FILE不是C语言关键字,只是标准C中的标准输入输出中定义的一个新的数据类型 stdio.htypedef struct _iobuf{ char* _ptr; int _cnt; char* _ba ...

  4. 李洪强漫谈iOS开发[C语言-009] - C语言关键字

    // //  main.m //  04 - C语言关键字 // //  Created by vic fan on 16/7/12. //  Copyright © 2016年 李洪强. All r ...

  5. c语言关键字总结

    1.关键字变更历史 1999年12月16日,ISO推出了C99标准,该标准新增了5个C语言关键字: inline restrict _Bool _Complex _Imaginary(注意bool 从 ...

  6. 1.C语言关键字(auto break case char const swtich)

    ANSI C标准C语言共有32个关键字,分别为: auto break case char const continue default do double else enum extern floa ...

  7. C/C++ 知识点---C语言关键字(32个)

    C/C++ 知识点 1.C语言关键字(32个) <1>.基本数据类型 [5] void :声明函数无返回值或无参数,声明空类型指针 char :声明字符型变量 int :声明整形变量 fl ...

  8. 继续学习:C语言关键字

    auto :声明自动变量 break:跳出当前循环 case:开关语句分支 char :声明字符型变量或函数 const :声明只读变量 continue:结束当前循环,开始下一轮循环 default ...

  9. C语言语法 typedef小结

    在总结typedef之前,先了解一个专业术语: 常量指针(const pointer):常量指针在定义的时候必须被初始化,而且一旦初始化完成,则它的值就不能再改变. int errNumb = 0; ...

随机推荐

  1. PHP手册应注意

    1.抽象类翻译.错误.在语言参考→类与对象→抽象类一节的开头,有这样的描述"抽象类中 至少要包含一个抽象方法."(http://www.php.net/manual/zh/lang ...

  2. 开心学习系列学习笔记-----nodejs缺点

    不支持故障恢复   不知你是否在调试的过程中注意,当程序有错误发生时,整个进程就会结束,需要重  新在终端中启动服务器.这一点在开发中无可厚非,但在产品环境下就是严重的问题  了,因为一旦用户访问时触 ...

  3. php爬虫的两种思路

    写php爬虫可能最大的问题就是php脚本执行时间的问题了,对于这个问题,我找到了两种解决方法. 第一种通过代码set_time_limit(0)或者ini_set("max_executio ...

  4. AOI

    AOI(Automatic Optic Inspection)的全称是自动光学检测,是基于光学原理来对焊接生产中遇到的常见缺陷进行检测的设备.AOI是新兴起的一种新型测试技术,但发展迅速,很多厂家都推 ...

  5. 检测字节流是否是UTF8编码

    几天前偶尔看到有人发帖子问“如何自动识别判断url中的中文参数是GB2312还是Utf-8编码” 也拜读了wcwtitxu使用巨牛的正则表达式检测UTF8编码的算法. 使用无数或条件的正则表达式用起来 ...

  6. Powershell --在线学习

    介绍和安装 自定义控制台 快速编辑模式和标准模式 快捷键 管道和重定向 Powershell交互式 数学运算 执行外部命令 命令集 别名 通过函数扩展别名 执行文件和脚本 Powershell变量 定 ...

  7. PowerShell3.0中,所有的命令

    Get-Command * >> cmd.txt CommandType Name ModuleName ----------- ---- ---------- Alias % -> ...

  8. EBS查找运行请求时间,参数等

    --查找运行请求时间,参数等(可以是某用户的,某个报表) select c.user_name, papf.full_name, b.user_concurrent_program_name, a.r ...

  9. yum笔记

    rpm --> yum HTML: HyperText Mark LanguageXML: eXtended Mark Language XML, JSON: 半结构化的数据 yum仓库中的元数 ...

  10. 特殊权限:SUID,SGID,Sticky

    特殊权限passwd:s SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者:    chmod u+s FILE    chmod u-s FILE        如果FIL ...