深入理解typedef

简介:

                                                          深入理解typedef

 

关于typedef的用法,网上已经有很多前辈总结过了,在这里我不想标新立异,代码阅历不一样,所理解的typedef的层次各有不同。这里,我想就我所理解的typedef用更加通俗易懂的方式写出来。

 

 

在开始之前,要始终牢记:

 

typedef的本质是取一个别名

先从简单的说起:

  • typedef alias type型

这里,typedef后面有2个量。这种方式是我们通常见到的最多的用法

 

typedef i_type int; i_type sun;

Linux下面,变量命名不能将就匈牙利命名法。

typedef就是为一种类型取别名,我们用这个别名去定义变量,那么该变量的类型就是别名的原始引用(可能说引用有些不太恰当)

i_type是int的别名。

 

 

那么用i_type去定义变量

 

i_type sun

 

实际上就是对原始类型(这里的原始变量是指int)的引用

即int sun

 

typedef alias type这种类型的还很多。

 

例如:

 

typedef struct Node{ int type; ..... }inode; /* 定义了一个结构体变量。如果没有typedef,我们定义结构体变量的时候,需要加struct关键字。 */ inode nod; /* 就上面的定义, 同样,我们一步一步的分析。 首先,去掉typedef关键字 inode是什么? 回答:inode是struct Node的一个结构体变量。 然后,加上typedef。 inode是什么? 回答:inode是一个别名 是谁的别名? 回答:是结构体变量的别名。 既然走到这里,一切都好办了。 */ inode nod; /* 再来。既然上面已经说清楚了。inode是结构体变量的别名。 那么,根据别名是对原始类型的引用的理论。上面的语句中,别名的原始类型是结构体变量。 那么,nod是什么? 回答:nod是结构体变量 */

 这样的例子还很多,我就不一一列举了。

 

 

 

 

  • typedef  express 型

这里,typedef,后面只有包含了别名的一个量或者一个表达式。

 

先举一个例子

 

 

typedef void (*func)(int, char); func set; /* 同样,先说说func是什么。 在这里,func表示一个函数指针,该函数有int char两个变量。 所以,func就是一个带两个参数函数的指针 所以,set就是一个带两个参数的函数指针的变量。 既然如此,set就是一个带有两个参数的函数的入口地址。 */ (*set)(int ,'a');//所以,这里就是合法的 /* 若果没有typedef的话,我们需要3步来完成这个任务 void func(int, char); void (*set)(int ,char); set = &func; set = func也是合法的,这里只是为了强调地址 set = func这种用法参考谭浩强《C语言程序设计》(第三版)P261的小例子 */

 

 

分析道这里。你应该大概能看到typedef的意思了。

 

typdef  char* point;

去掉typedef,point是一个指向char类型的指针。

 

那么

point ptr

 

ptr也就是一个指向char的指针。

 

为了验证自己的理解,可以随便找几个typedef分析,看能不能分析透彻。

 

 


版权申明:
转载文章请注明原文出处http://blog.csdn.net/feiyinzilgd/archive/2010/12/14/6076396.aspx
并请联系谭海燕本人或者前往谭海燕个人主页留言

目录
相关文章
|
C语言
C typedef
C typedef,C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字,然后使用这个新的数据类型来直接定义结构变量。。
43 1
C++ typedef 使用大全
C++ typedef 使用大全
|
6月前
|
C语言 Windows
c typedef
c typedef
41 3
|
6月前
|
编译器 C++
struct 和 typedef struct 区别和用法总结
struct 和 typedef struct 区别和用法总结
111 0
|
6月前
|
C语言 C++
[C++&C] Struct 和Typedef Struct的区别
[C++&C] Struct 和Typedef Struct的区别
150 0
|
编译器 C++
typedef vs #define
typedef vs #define。
30 0
|
存储 编译器 C语言
typedef的使用
typedef的使用
140 0
|
C语言
14.typedef 命令
14.typedef 命令
94 0
|
C语言 C++ 编译器
C/C++语法知识:typedef struct 用法详解
第一篇:typedef struct与struct的区别 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
6342 0
|
编译器 C++
struct和typedef struct
struct和typedef struct
113 0