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语言--关键字 typedef的更多相关文章
- (转)[C++语法] 关键字typedef用法
转自http://www.cnblogs.com/SweetDream/archive/2006/05/10/395921.html C/C++语言中的typedef相信大家已经不陌生,本文对C/C+ ...
- C语言关键字—-sizeof 、typedef、const、static、register、extern、#define
关键字:sizeof .#define.typedef.const.static.register.extern sizeof 1. 作用:求数据所占得内存空间大小 2. 本质:求数据得类型所占的内存 ...
- FILE不是C语言关键字
FILE不是C语言关键字,只是标准C中的标准输入输出中定义的一个新的数据类型 stdio.htypedef struct _iobuf{ char* _ptr; int _cnt; char* _ba ...
- 李洪强漫谈iOS开发[C语言-009] - C语言关键字
// // main.m // 04 - C语言关键字 // // Created by vic fan on 16/7/12. // Copyright © 2016年 李洪强. All r ...
- c语言关键字总结
1.关键字变更历史 1999年12月16日,ISO推出了C99标准,该标准新增了5个C语言关键字: inline restrict _Bool _Complex _Imaginary(注意bool 从 ...
- 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 ...
- C/C++ 知识点---C语言关键字(32个)
C/C++ 知识点 1.C语言关键字(32个) <1>.基本数据类型 [5] void :声明函数无返回值或无参数,声明空类型指针 char :声明字符型变量 int :声明整形变量 fl ...
- 继续学习:C语言关键字
auto :声明自动变量 break:跳出当前循环 case:开关语句分支 char :声明字符型变量或函数 const :声明只读变量 continue:结束当前循环,开始下一轮循环 default ...
- C语言语法 typedef小结
在总结typedef之前,先了解一个专业术语: 常量指针(const pointer):常量指针在定义的时候必须被初始化,而且一旦初始化完成,则它的值就不能再改变. int errNumb = 0; ...
随机推荐
- Qt try catch排错历程——C++的异常对除零不起作用
前几天从网上下载了一份网友用Qt写的作品,打开时发现它是用VS2010写的,而我机器上只有VS2008,倒腾了半天最终没能用VS2008打开,而自己又不想再安装VS2010.还好在工程中有.pro文件 ...
- 微软官方的Unity支持组件
https://unity.codeplex.com/ http://www.nuget.org/packages/Unity.Interception/ http://www.nuget.org/p ...
- Windows 下 pip和easy_install 的安装与使用
最简单的莫过于用vs 开发python 的程序,集成PTVS插件后,果然简单易用,调试也方便. 手工搭建的话: 官网:https://pypi.python.org/pypi/setuptools 主 ...
- 【Xamarin破解补丁找不到?】
前面的博文,推荐竟然那么点数目?下面的这个网址是个各种破解资源的站点,里面说不定有你想要的. http://onhax.net/ 要学会在搜索框搜索... 好吧,其实里面就有Xamarin的破解补丁 ...
- Roman numerals
Roman numerals 罗马数字的题目, 注意几个关键的数字即可: (100, 400, 500, 900) -> ('C', 'CD', 'D', 'CM'); (10, 40, 50, ...
- 低效的SQL引发的cache buffers chains latch
1.低效的SQL 低效的SQL语句时发生cache buffers chains 锁存器争用的最重要原因.多个进程同时扫描大范围的索引或表时,可能广泛 地发生cache buffers chains ...
- Intel 凌动 D525 产品参数Intel 凌动 Z3735F 产品参数
https://item.taobao.com/item.htm?spm=a230r.1.14.8.kauehT&id=40450541158&ns=1&abbucket=19 ...
- 多系统实现单点登录方案:SSO 单点登录
一.什么是单点登录SSO(Single Sign-On) SSO是一种统一认证和授权机制,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用 ...
- Linux环境 Mysql新建用户和数据库并授权
测试环境:linux 和Mysql 5.5.35 一.新建用户 //登录Mysql@>mysql -u root -p@>密码//创建用户mysql> insert into mys ...
- androidHandler讲解
秒钟还没有完成的话,会收到Android系统的一个错误提示 "强制关闭". 这个时候我们需要把这些耗时的操作,放在一个子线程中,因为子线程涉及到UI更新,Android主线程是 ...