typedef关键字用法 免费下载
typedef关键字的用法(一)
typedef关键字的用法(一)
Typedef关键字的用法
在C语言中,typedef是一个非常有用的关键字,用于为已存在
的数据类型定义一个新的名称。通过使用typedef关键字,可以简化
复杂数据类型的使用,并提高代码的可读性。下面是一些typedef关
键字的用法。
1. 为基本数据类型定义新名称
typedef int myInt;
上述代码为int基本数据类型定义了一个新的名称myInt。现在,我们可以使用myInt来定义变量,就如同使用int一样。
2. 为自定义结构体定义新名称
typedef struct {
int x;
int y;
} Point;
上述代码为一个无名struct结构体定义了一个新的名称Point。现在,我们可以使用Point来声明struct类型的变量。
3. 为指针类型定义新名称
typedef int* IntPointer;
上述代码为int指针类型定义了一个新的名称IntPointer。现在,我们可以使用IntPointer来声明int类型的指针变量。
4. 为函数指针定义新名称
typedef void (*FuncPointer)(int, int);
上述代码为接受两个int参数且返回值为void的函数指针类型
定义了一个新的名称FuncPointer。现在,我们可以使用FuncPointer来声明函数指针变量。
5. 为枚举类型定义新名称
typedef enum {
RED,
GREEN,
BLUE
} Color;
上述代码为一个无名enum枚举类型定义了一个新的名称Color。现在,我们可以使用Color来声明enum类型的变量。
CC++中typedef关键字详解
CC++中typedef关键字详解
typedef是C/C++中⼀个很关键的关键字,它的作⽤是⽤来给类型起别名。因为在遇上不同数据类型,尤其是复杂类型,typedef的⽤法有⼀些细微的差距,所以很多⼈会有⼀些疑惑,今天我就来整理⼀下。
typedef关键字主要⽤来给⼀下⼏种类型起别名:
基本数据类型
结构体
数组
枚举类型
指针
函数指针
指针函数
1. 基本数据类型
使⽤typedef给基本数据类型起别名很简单:
//typedef关键字数据类型别名
typedef int Myint;
typedef double Mydouble;
起了别名以后,别名就相当于原类型名的同义词,能使⽤原类型的地⽅就可以使⽤别名。
2. 结构体
和基本数据类型类似,将别名放在结构体之后
struct Person{
string name;
int age;
};
//typedef关键字结构体别名
typedef struct Person P;
3. 数组
给数组起别名时,typedef的⽤法和单个元素有些区别,别名被挤在数组元素类型和数组元素个数之间。
//typedef关键字数组元素类型别名[数组元素个数]
typedef int C[10];
C t; // t的类型是int[10],也就是包含10个int类型的数组
4. 枚举类型
和结构体类型类似
enum Color{Red,Green,Blue} primaryColor;
//typedef关键字枚举类型别名
typedef Color primaryColor;
primaryColor G = Red
typedef class用法
一、typedef关键字的作用
typedef 是C语言中用来定义新数据类型的关键字,它可以给现有的
数据类型起一个新的名字。通过typedef关键字,我们可以简化复杂
数据类型的使用,增强程序的可读性和可维护性。
二、typedef的语法格式
typedef 的语法格式如下:
typedef 原类型名新类型名;
其中,原类型名可以是基本数据类型(int、char、float等)、结构体、联合体或枚举类型,新类型名是我们想要定义的新类型的名称。
三、使用typedef定义基本数据类型
1. 定义int类型
我们可以使用typedef定义一个新的int类型:
typedef int Integer;
这样,我们就可以用Integer代表int类型,使用起来更加直观和易读。
2. 定义char类型
同样的,我们也可以使用typedef定义一个新的char类型:
typedef char Letter;
这样,我们就可以用Letter代表char类型,使得代码更加易懂。
3. 定义float类型
typedef关键字也可以用来定义新的float类型:
typedef float Realnum;
这样,我们就可以用Realnum代表float类型,让程序更易读易懂。
四、使用typedef定义结构体类型
1. 定义结构体类型
通过typedef关键字,我们可以给结构体类型起一个新的名字:typedef struct
{
int age;
char name[20];
} Person;
这样,我们就可以使用Person代表这个结构体类型,方便我们在程序中使用。
c语言中typedef用法
c语言中typedef用法
在C语言中,`typedef`是一个关键字,用于为已知的数据类型定义一个新的名字。这个新名字可以让变量更具描述性,或者简化一些复杂的类型声明。`typedef`的作用相当于为现有类型创建一个别名。
`typedef`的用法有以下几种:
1. 为基本数据类型定义别名:
```c
typedef unsigned int size;
typedef unsigned int16 u16;
typedef unsigned int8 u8;
```
在这个例子中,`size`、`u16`和`u8`分别是`unsigned int`、`unsigned int16`和`unsigned int8`的别名。
2. 为结构体定义别名:
```c
typedef struct tagMyStruct {
int iNum;
long lLength;
} MyStruct;
```
这个例子中,`MyStruct`是一个结构体的别名,该结构体包含两个成员:`int iNum`和`long lLength`。
3. 为枚举类型定义别名:
```c
typedef enum {
yes,
no
} YesNo;
```
在这个例子中,`YesNo`是`enum`类型的别名,包含两个枚举值:`yes`和`no`。
4. 为数组定义别名:
```c
typedef uint8 MyArray[6];
```
这个例子中,`MyArray`是一个包含6个`uint8`类型元素的数组的别名。
总之,`typedef`在C语言中的主要用途是为现有数据类型创建别名,以便让变量更具描述性或简化类型声明。typedef定义的新类型名与其对应的原类型名具有相同的语法和语义,但具有更清晰的含义。
typedef用法
以上的定义可以分为两步形成
第一步:定义结构体 struct LNode{ ElemType data; struct LNode *next; }; 第二步:利用typedef定义别名 typedef struct LNode LNode; typedef struct LNode *LinkList; //所以明显LinkList 是结构体指针的名称
为什么定义的名称要相同? 请看下面程序: typedef struct LNode { int *elem; int length; }SqList; 比较: 应改为 LNode La,Lb; struct LNode SqList La,Lb;
ຫໍສະໝຸດ Baidu
La,Lb
即:typedef stuct LNode SqList;
类似的可以做如下推广: typedef ARR2 ARR3[4]; //实际上等价于定义ARR3为一个三元数组 typedef int ARR3[4][4][4];
(1) (2) (3) (4) (5) (6)
(7)
处理动态链表所需的函数 库函数提供动态地开辟和释放存储单元的 有关函数: malloc函数 其函数原型为void *malloc(unsigned int size);其 作用是在内存的动态存储区中分配一个长度为 size的连续空间。此函数的值(即“返回值”) 是一个指向分配域起始地址的指针(类型为 void)。如果此函数未能成功地执行(例如内 存空间不足),则返回空指针(NULL)。
typedef struct union用法 -回复
typedef struct union用法-回复
typedef和struct是C语言中的关键字,用于定义自定义的数据类型。同时,union也是C语言中的关键字,用于定义一种特殊的数据类型,可以在同一个存储空间中存储不同类型的数据。本文将详细介绍typedef、struct和union的用法,并对其进行逐步解释。
一、typedef用法
typedef关键字用于给已有的数据类型取一个新的名字,也就是为类型定义一个别名。这个别名将可以作为新的类型名来使用。typedef的语法如下:
typedef alreadyExistingDataType newDataTypeName;
例如,如果我们要为int类型定义一个别名,可以这样写:
typedef int myInt;
在这里,myInt就是int类型的别名。接下来,我们可以使用myInt作为int类型的替代,例如:
myInt x = 10;
注意,使用typedef定义的类型名与基本的数据类型没有区别,仅仅是为了让代码更易读和理解。
二、struct用法
struct是C语言中的结构体关键字,用于定义一种复合数据类型,可以包含不同类型的数据成员。结构体的定义包括结构体名和结构体成员,结构体的成员可以是任何合法的C数据类型,也可以是其他的结构体。
struct的定义语法如下:
struct structName {
member1;
member2;
...
};
例如,我们可以定义一个学生的结构体如下:
struct Student {
int id;
char name[20];
qt中typedef的用法
在C++编程中,typedef是一种用于定义类型别名的关键字。在Qt框架中,typedef也常被用于简化复杂数据类型的声明和使用。
以下是在Qt中使用typedef的一些常见场景:
1.
定义新的数据类型:
2.
cpp复制代码
typedef QList<int> IntList;
这样,你就可以使用IntList作为QList<int>的别名,而不是每次都写QList<int>。
2. 定义函数指针类型:
cpp复制代码
typedef void(*SignalType)(int);
在Qt中,信号(signals)和槽(slots)机制经常使用这种函数指针类型。上面的代码定义了一个名为SignalType的函数指针类型,该函数接受一个int参数并返回void。
3. 定义枚举类型:
cpp复制代码
typedef QFlags<Qt::AlignmentFlag> AlignmentFlags;
Qt的QFlags模板类用于表示位集,它可以方便地处理枚举值的组合。上面的代码定义了一个新的类型AlignmentFlags,它是Qt::AlignmentFlag枚举类型的位集别名。
4. 简化复杂类型声明:
对于复杂的模板类型或指针类型,typedef可以帮助你简化声明。
cpp复制代码
typedef QSharedPointer<QObject> QObjectPointer;
这样,你就可以使用QObjectPointer代替原始的复杂类型。
5. 定义数组类型:
c++的typedef的用法
C++中typedef关键字的用法
本文介绍了C++中typedef的用法和作用。typedef是一种用来创建类型别名的关键字,它可以为一个已有的数据类型定义一个新的名称,以方便程序员使用。typedef有以下几种用途:
定义类型别名,提高代码的可读性和一致性。
定义与平台无关的数据类型,实现跨平台的编程。
定义复杂的声明,简化代码的编写和理解。
定义函数指针,方便函数作为参数或返回值传递。
一、typedef的基本语法
typedef的语法如下:
typedef type new_type_name;
其中,type是已有的数据类型,new_type_name是我们为该类型定义的新名称。例如:
typedef int INT; //定义INT为int类型的别名
typedef char* PSTR; //定义PSTR为char*类型的别名
使用typedef定义的新类型名可以像原类型名一样使用,例如:
INT a = 10; //相当于int a = 10;
PSTR s = "Hello"; //相当于char* s = "Hello";
注意,typedef并不会创建新的数据类型,只是为已有的数据类型起一个新名字。因此,使用typedef定义的新类型名和原类型名是完全等价的,可以互相赋值或比较。例如:
int b = a; //合法
PSTR t = s; //合法
if (a == b) //合法
if (s == t) //合法
二、typedef的用途
2.1 定义类型别名
使用typedef为一个已有的数据类型定义一个新名称,可以提高代码的可读性和一致性。例如,在C语言中,经常需要使用指针来操作字符串或数组。如果直接使用char或int等类型来声明指针变量,可能会出现以下问题:代码不够直观和清晰,容易出错或混淆。例如:
python typedef用法
Python typedef用法
1. 介绍typedef的概念和作用
typedef是C语言中的一个关键字,用于定义新的数据类型,是类型定义的缩写。在C语言中,当我们需要定义一个新的数据类型时,可以使用typedef来简化代码,并增加代码的可读性。
在Python中,虽然没有typedef这个关键字,但是我们可以通过一些方法来实现类似的功能。
2. 在Python中使用自定义类来实现typedef
在Python中,我们可以使用自定义类来实现类似C语言中的typedef功能。我们可以定义一个Point类来表示二维坐标点:
```python
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
```
这样,我们就可以使用Point类来表示二维坐标点,增加代码的可读性。
3. 在Python中使用dtuple来实现typedef
Python的collections模块中提供了一个namedtuple函数,可以
用来创建一个命名元组,即一个带有字段名的元组。我们可以使用namedtuple来定义新的数据类型,类似于C语言中的typedef功能。 ```python
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
```
这样,我们就可以使用Point来表示二维坐标点,增加代码的可读性。
4. 在Python中使用typehint来实现typedef
在Python 3.5及以上版本中,引入了type hint的概念,可以用来
typedef的基本用法
typedef的基本⽤法
1. 四个⽤途
⽤途⼀:
定义⼀种类型的别名,⽽不只是简单的宏替换。可以⽤作同时声明指针型的多个对象。⽐如:
char* pa, pb; // 这多数不符合我们的意图,它只声明了⼀个指向字符变量的指针,和⼀个字符变量;
以下则可⾏:
typedef char* PCHAR; // ⼀般⽤⼤写
PCHAR pa, pb; // 可⾏,同时声明了两个指向字符变量的指针
虽然:
char *pa, *pb;
也可⾏,但相对来说没有⽤typedef的形式直观,尤其在需要⼤量指针的地⽅,typedef的⽅式更省事。
⽤途⼆:
⽤在旧的C的代码中(具体多旧没有查),帮助struct。以前的代码中,声明struct新对象时,必须要带上struct,即形式为: struct 结构名对象名,如:
struct tagPOINT1
{
int x;
int y;
};
struct tagPOINT1 p1;
⽽在C++中,则可以直接写:结构名对象名,即:
tagPOINT1 p1;
估计某⼈觉得经常多写⼀个struct太⿇烦了,于是就发明了:
typedef struct tagPOINT
{
int x;
int y;
}POINT;
POINT p1; // 这样就⽐原来的⽅式少写了⼀个struct,⽐较省事,尤其在⼤量使⽤的时候
或许,在C++中,typedef的这种⽤途⼆不是很⼤,但是理解了它,对掌握以前的旧代码还是有帮助的,毕竟我们在项⽬中有可能会遇到较早些年代遗留下来的代码。
⽤途三:
⽤typedef来定义与平台⽆关的类型。
c++typedef的用法结构体
c++typedef的用法结构体
结构体是C++中非常重要的数据类型,它可以将不同类型的数据组合在一起,形成一个新的数据类型。在实际编程中,我们经常需要定义
结构体来表示复杂的数据结构。而在使用结构体时,我们可以通过typedef关键字来给结构体起一个别名,以方便我们在代码中使用。
1. typedef的基本用法
在C++中,我们可以使用typedef关键字为已有的数据类型、指针、数组、函数或结构体等起一个别名,从而方便我们在代码中使用。我
们可以通过以下方式来定义一个结构体和给它起一个别名:
```cpp
typedef struct {
int id;
string name;
int age;
} Person;
```
在这里,我们使用typedef关键字为一个包含id、name和age三个成员变量的结构体起了一个别名Person。这样,我们在代码中就可以直接使用Person来表示这个结构体,而不需要再写出完整的定义。
2. 结构体的嵌套使用
在实际编程中,我们经常需要使用结构体的嵌套,即在一个结构体中包含另一个结构体作为成员变量。通过typedef的方式,我们可以方便地使用嵌套结构体,使得代码更加清晰易读。我们可以定义一个包含多个学生信息的结构体,并给它起一个别名:
```cpp
typedef struct {
int id;
string name;
int age;
} Student;
typedef struct {
int classId;
string className;
Student students[50];
typedef 用法
typedef 用法
typedef是C语言中的一个关键字,用于定义别名。通常,我们使用typedef为数据类型或复杂结构体定义一个短而易懂的别名,以方便我们在程序中的使用。
具体来说,typedef可以用来定义以下几个东西:
1. typedef基本数据类型别名
例如,我们可以使用typedef为int定义一个别名myint,如下所示:
```
typedef int myint;
```
这样,在程序中我们就可以使用myint代替int类型了,例如: ```
myint num = 10;
```
2. typedef复杂数据类型别名
我们可以使用typedef为结构体、联合体、指针等复杂数据类型定义别名,例如:
```
typedef struct {
int id;
char name[20];
float score;
} Student;
```
这样,我们就定义了一个名为Student的结构体类型,包含三个成员变量id、name和score,我们可以使用Student作为结构体类型的别名,例如:
```
Student s1;
```
3. typedef函数指针别名
我们可以使用typedef为函数指针定义别名,例如:
```
typedef int (*FuncPtr)(int, int);
```
这样,我们就定义了一个名为FuncPtr的函数指针类型,该函数指针的参数为两个int型变量,返回值也是int型变量,我们可以使用FuncPtr作为函数指针的别名,例如:
```
int add(int a, int b)
{
return a + b;
typedef在java中用法
一、typedef在Java中的基本概念
在Java语言中,typedef是一种用于定义类型别名的关键字。通过使用typedef关键字,我们可以给一个已有的数据类型起一个新的名字,从而使程序更易读、易懂。在其他编程语言中,typedef通常用于简
化复杂的数据类型命名,提高代码的可读性和可维护性。
二、typedef在Java中的用法
在Java中,虽然没有提供类似于C或C++中的typedef关键字,但
是我们可以通过其他方式实现类似的功能。以下是一些常见的typedef用法:
1. 使用final关键字定义类型别名
在Java中,可以使用final关键字定义一个常量,并将其用作类型别名。例如:
final int SIZE = 10;
通过定义一个常量SIZE,并在程序中使用它来代表特定的数据类型,
就可以达到类似于typedef的效果。
2. 使用接口或抽象类定义类型别名
在Java中,可以通过定义接口或抽象类来实现类型别名的功能。例如:public interface MyType {
int value = 10;
}
通过定义一个接口MyType,并在程序中实现该接口,就可以将其用作类型别名。
3. 使用枚举类型定义类型别名
在Java中,可以通过定义枚举类型来实现类型别名的功能。例如:enum Color {
RED, GREEN, BLUE;
}
通过定义一个枚举类型Color,并在程序中使用它来代表特定的数据类型,就可以达到类似于typedef的效果。
三、typedef在Java中的优缺点
尽管在Java中没有直接提供typedef关键字,但是通过上述的方法,也可以实现类似的功能。然而,这种方式也存在一些优缺点:
typedefine用法
typedefine⽤法
typedef为C语⾔的关键字,作⽤是为⼀种数据类型定义⼀个新名字。这⾥的数据类型包括内部数据类型(int,char等)和⾃定义的数据类型(struct等)。
⽤法:
变量别名
例如:
单个变量:
typedef int size;
size a; 等价于 int a;
数组:
typedef char line[10];
line text; 等价于 char line[10];
指针
typedef char* pstr;
pstr p; 等价于char* p;
替换复杂声明
typedef & 复杂的变量声明
理解复杂声明可⽤的“右左法则”:
从变量名看起,先往右,再往左,碰到⼀个圆括号就调转阅读的⽅向;括号内分析完就跳出括号,还是按先右后左的顺序,如此循环,直到整个声明分析完。
int (*func)(int *p);
⾸先找到变量名func,外⾯有⼀对圆括号,⽽且左边是⼀个*号,这说明func是⼀个指针;然后跳出这个圆括号,先看右边,⼜遇到圆括号(只有函数后⾯才跟形参圆括号),这说明 (*func)是⼀个函数,所以func是⼀个指向这类函数的指针,即函数指针,这类函数具有int*类型的形参,返回值类型是int,此处就是声明函数。
int (*func[5])(int *);
func 右边是⼀个[]运算符,说明func是具有5个元素的数组;func的左边有⼀个*,说明func的元素是指针(注意这⾥的*不是修饰func,⽽是修饰 func[5]的,原因是[]运算符优先级⽐*⾼,func先跟[]结合)。跳出这个括号,看右边,⼜遇到圆括号,说明func数组的元素是函数类型的指针,它指向的函数具有int*类型的形参,返回值类型为int。
typedef用法
typedef用法
typedef是C/C++的关键字,它可以给现有的类型定义一个别名。使用typedef后,程序中可以使用别名替换原有类型名,提高代码的可读性,提高维护的便捷性。它的形式很简单:
typedef type alias;
它的意思是让编译器根据type来理解alias,相当于alias是一个type类型名的别名,也就是说alias类型完全等同于type类型。以下将以实例展开typedef的用法:
(1)给原有类型定义别名
typedef long MY_LONG;//给long类型定义一个别名MY_LONG MY_LONG l1 = -32L;
(2)给指针类型定义别名
typedef int *pInt;
pInt p1, p2;
(3)给数组类型定义别名
typedef int ARR[3];
ARR ar1 = { 1, 2, 3 };
(4)给函数类型定义别名
typedef void (*pfnFUNC)(int);
void func(int n)
{
tprintf(func : %d
n);
}
pfnFUNC pf1 = func;
以上就是typedef用法的示例,它可以用来替换一般类型,指针类型,数组类型和函数类型,使代码中更加直观,简单,易读易维护,其中给函数定义别名对使用指针函数特别有用。
由于typedef是C/C++语言内置的关键字,在实际的编程中,经常会需要用它来给特定类型定义一个别名,这种情况可能出现在需要使用复杂类型的时候,可以用一个简洁明了的名字取代长且难以理解的类型,提升代码可读性,减少编程中出错的几率,使维护变得更加便捷。
typedef用法
typedef用法小结:
在C语言的情况下,与C++稍有出入。
这两天在看程序的时候,发现很多地方都用到typedef,在结构体定义,还有一些数组等地方都大量的用到.但是有些地方还不是很清楚,今天下午,就想好好研究一下.上网搜了一下,有不少资料.归纳一下:
来源一:Using typedef to Curb Miscreant Code
Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法。不管怎样,使用typedef 能为代码带来意想不到的好处,通过本文你可以学习用typedef 避免缺欠,从而使代码更健壮。
typedef 声明,简称typedef,为现有类型创建一个新的名字。比如人们常常使用typedef 来编写更美观和可读的代码。所谓美观,意指typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。本文下面将竭尽全力来揭示typedef 强大功能以及如何避免一些常见的陷阱。
如何创建平台无关的数据类型,隐藏笨拙且难以理解的语法?
使用typedef 为现有类型创建同义字。定义易于记忆的类型名, typedef 使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。类型出现在所声明的变量名字中,位于''typedef'' 关键字右边。例如:
typedef int size;
此声明定义了一个int 的同义字,名字为size。注意typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要int 的上下文中使用size:void measure(size * psz);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
typedef用法
1、为现有数据类型定义同义词
typedef使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。
例如:
typedef int size;
此声明定义了一个int的同义字,名字为size。注意typedef并不创建新的类型。
它仅仅为现有类型添加一个同义字。你可以在任何需要int的上下文中使用size:
void measure(size*psz);
size array[4];
2、typedef还可以掩饰复合类型,如指针和数组
z数组
例如:typedef char Line[81];表示使用Line代表具有81个元素的char类型数组。如果要生成类似的数据可以使用如下形式:Line text,secondline;
相当于char test[81];char secondline[81];
z隐藏指针语法
例如:typedef char*pstr;
int mystrcmp(pstr,pstr);相当于
int mystrcmp(char*,char*);
注意:标准函数strcmp()有两个‘const char*'类型的参数。因此,它可能会误导人们象下面这样声明mystrcmp(),
int mystrcmp(const pstr,const pstr);
这是错误的,‘const pstr'被解释为‘const char*‘(一个指向char的常量指针),而不是‘char*'(指向char的指针)。
修改:添加,typedef const c pstr;
记住:不管什么时候,只要为指针声明typedef,那么都要在最终的typedef 名称中加一个const,以使得该指针本身是常量,而不是对象
z链表中应用
例如:
typedef struct node
{
char name[20];
struct node*link;
}stu;
3、代码简化
例如:typedef int(*PF)(const char*,const char*);
使用PF类型作为函数指针的同义字,该函数有两个const char*类型的参数以及一个int类型的返回值。
4、促进扩平台开发
typedef有另外一个重要的用途,那就是定义机器无关的类型,例如,你可以定义一个叫REAL的浮点类型,在目标机器上它可以i获得最高的精度:
typedef long double REAL;
在不支持long double的机器上,该typedef看起来会是下面这样:
typedef double REAL;
并且,在连double都不支持的机器上,该typedef看起来会是这样:、
typedef float REAL;
你不用对源代码做任何修改,便可以在每一种平台上编译这个使用REAL类型的应用程序。唯一要改的是typedef本身。在大多数情况下,甚至这个微小的变动完全都可以通过奇妙的条件编译来自动实现。不是吗?标准库广泛地使用typedef来创建这样的平台无关类型:size_t,ptrdiff和fpos_t就是其中的例子。
此外,象std::string和std::ofstream这样的typedef还隐藏了长长的,难以理解的模板特化语法
5、C语言实例
(1)typedef long byte_4;给已知数据类型long起个新名字,叫byte_4。
(2)typedef struct tagMyStruct
{
int iNum;
long lLength;
}MyStruct;
完成两个工作,一是定义了struct tagMyStruct结构,可以用struct tagMyStruct varName来定义变量,但要注意,使用tagMyStruct varName来定义变量是不对的,因为struct和tagMyStruct合在一起才能表示一个结构类型。二是typedef为这个新的结构起了一个名字,叫MyStruct。可以使用MyStruct varName来定义变量。
6、typedef与define的区别
(1)例子:typedef char*pStr1;
#define pStr2char*
pStr1s1,s2;
pStr2s3,s4;
在上述的变量定义中,s1、s2、s3都被定义为char*,而s4则定义成了char,不是我们所预期的指针变量,根本原因就在于#define只是简单的字符串替换而typedef则是为一个类型起新名字。
(2)例子:
#define f(x)x*x
main()
{
int a=6,b=2,c;
c=f(a)/f(b);//被解释为c=a*a/b*b即6*6/2*2=36
printf("%d\\n",c);
}
以下程序的输出结果是:36
注意:使用#define定义时,如果定义中包含表达式,必须使用括号,则上述定义应该如下定义才对:
#define f(x)(x*x)
(3)define宏定义有一个特别的长处:可以使用#ifdef,#ifndef等来进行逻辑判断,还可以使用#undef来取消定义。
(4)typedef也有一个特别的长处:它符合范围规则,使用typedef定义的变量类型其作用范围限制在所定义的函数或者文件内(取决于此变量定义的位置),而宏定义则没有这种特性。
(5)对复杂变量建立一个类型别名的方法很简单,你只要在传统的变量声明表达式里用类型名替代变量名,然后把关键字typedef加在该语句的开头就行了。