C++中typedef是什么意思啊
答案:5 悬赏:80 手机版
解决时间 2021-04-18 06:31
- 提问者网友:活着好累
- 2021-04-17 20:23
C++中typedef是什么意思啊
最佳答案
- 五星知识达人网友:撞了怀
- 2021-04-17 21:16
typedef是C语言32个关键字之一,意思是重新定义一个数据类型,严格来说,是将现有的数据类型起个新的别名。
这样做的最大好处是:简化复杂类型,提高程序的可读性。
如:
典型应用1:
typedef struct msg
{
DWORD dd;
WORD ss;
double sd;
double sdf;
} msg, *gg;
//这里是将struct msg结构体类型重新定义为msg
//将struct msg *结构体指针类型,重新定义为gg
分步写就是:
struct msg
{
DWORD dd;
WORD ss;
double sd;
double sdf;
} ;//定义结构体struct msg类型
typedef struct msg msg ;
typedef struct msg * gg ;
典型应用2:
重新定义一个函数指针类型
typedef int (*pp)( gg );
该句是重新定义了一个新的数据类型 pp;接下来,可以用pp去定义形如int xxx( struct msg *)类型的函数指针变量了。如:
//定义一个函数func
int func( struct msg * pm )
{
XXX; //函数体
return 0;
}
int main()
{
pp pf=func ; //定义一个函数指针pf,指向func函数
gg m ; //定义一个结构体指针m
pf( m ); //通过pf引用func函数,就相当于调用 func(m);
...
}
这样做的最大好处是:简化复杂类型,提高程序的可读性。
如:
典型应用1:
typedef struct msg
{
DWORD dd;
WORD ss;
double sd;
double sdf;
} msg, *gg;
//这里是将struct msg结构体类型重新定义为msg
//将struct msg *结构体指针类型,重新定义为gg
分步写就是:
struct msg
{
DWORD dd;
WORD ss;
double sd;
double sdf;
} ;//定义结构体struct msg类型
typedef struct msg msg ;
typedef struct msg * gg ;
典型应用2:
重新定义一个函数指针类型
typedef int (*pp)( gg );
该句是重新定义了一个新的数据类型 pp;接下来,可以用pp去定义形如int xxx( struct msg *)类型的函数指针变量了。如:
//定义一个函数func
int func( struct msg * pm )
{
XXX; //函数体
return 0;
}
int main()
{
pp pf=func ; //定义一个函数指针pf,指向func函数
gg m ; //定义一个结构体指针m
pf( m ); //通过pf引用func函数,就相当于调用 func(m);
...
}
全部回答
- 1楼网友:不如潦草
- 2021-04-18 02:07
typedef类型定义,就是把struct msg这种类型定义为msg类型。
- 2楼网友:零点过十分
- 2021-04-18 00:43
类型定义关键字,他用来定义一个类型。。。。
typedef unsigned int uint;
如果你写这一句话,就定义了一个类型,他的名字是uint 代表无符号数,之后你可以用
uint i;来定义一个无符号数。。。。
你得这句话是定义了一个结构类型,类型名就是msg;
以后你要创建一个这样的结构体只需要msg a;即可,如果没有定义,你就只能写成
struct msg a;
typedef 的用法是 typedef 要定义的类型 使用的类型名;
typdef语句使用后就定义了一个新的类型名用来代替原来的类型,之后就可以使用这个类型,
比如 typdef int i;
i j;
这就定义了一个类型名叫i; 他是int型的,第二句是声明一个i类型的变量j;
typedef unsigned int uint;
如果你写这一句话,就定义了一个类型,他的名字是uint 代表无符号数,之后你可以用
uint i;来定义一个无符号数。。。。
你得这句话是定义了一个结构类型,类型名就是msg;
以后你要创建一个这样的结构体只需要msg a;即可,如果没有定义,你就只能写成
struct msg a;
typedef 的用法是 typedef 要定义的类型 使用的类型名;
typdef语句使用后就定义了一个新的类型名用来代替原来的类型,之后就可以使用这个类型,
比如 typdef int i;
i j;
这就定义了一个类型名叫i; 他是int型的,第二句是声明一个i类型的变量j;
- 3楼网友:孤独的牧羊人
- 2021-04-17 23:14
typedef DWORd (PASCAL *pp)(gg);
typedef struct msg
{
DWORD dd;
WORD ss;
double sd;
double sdf;
} msg, *gg;
把msg定义成结构 struct msg
gg定义成结构指针 struct msg*;
把 pp定义成 DWORd (PASCAL *)(gg); 函数指针类型
typedef定义一个用户命名的类型,
可以 用一个有意义的名字命名.
typedef struct msg
{
DWORD dd;
WORD ss;
double sd;
double sdf;
} msg, *gg;
把msg定义成结构 struct msg
gg定义成结构指针 struct msg*;
把 pp定义成 DWORd (PASCAL *)(gg); 函数指针类型
typedef定义一个用户命名的类型,
可以 用一个有意义的名字命名.
- 4楼网友:鸽屿
- 2021-04-17 22:41
typedef A B
就是说 我给A类型一个别名 称为B
这个typedef看上去比较鸡肋 其实有3种用法
1。你可能定义结构体structure或者类class,那么每次申明新的结构体或类时你要重复写关键字,而且名字比较长,很烦人,就可以用typedef,给一个简短的名字。举例Struct St{.....一堆变量...}
你每次申明都要 Struct St a; Struct St b;很烦,特别是St的名字很长。你可以typedef Struct St MyType。之后就可以Mytype A,B;这样方便了。
2。便于后期修改。举例:你可以有个很多对象是int型的,那么你在第1次写程序的时候频繁地写int A;........int B;......int C;这样,但是后期你发现要修改程序从int变到char。难道你每个变量申明的int关键字都修改一次?这样显然很2,你可以typedef int MyType,申明MyType A;.....MyType B;这样。你要转成char 只要把typedef int MyType换成typedef char MyType就可以。很方便。
3。多人协同开发时可以实现定义好类型名,方便开发。来自:求助得到的回答
就是说 我给A类型一个别名 称为B
这个typedef看上去比较鸡肋 其实有3种用法
1。你可能定义结构体structure或者类class,那么每次申明新的结构体或类时你要重复写关键字,而且名字比较长,很烦人,就可以用typedef,给一个简短的名字。举例Struct St{.....一堆变量...}
你每次申明都要 Struct St a; Struct St b;很烦,特别是St的名字很长。你可以typedef Struct St MyType。之后就可以Mytype A,B;这样方便了。
2。便于后期修改。举例:你可以有个很多对象是int型的,那么你在第1次写程序的时候频繁地写int A;........int B;......int C;这样,但是后期你发现要修改程序从int变到char。难道你每个变量申明的int关键字都修改一次?这样显然很2,你可以typedef int MyType,申明MyType A;.....MyType B;这样。你要转成char 只要把typedef int MyType换成typedef char MyType就可以。很方便。
3。多人协同开发时可以实现定义好类型名,方便开发。来自:求助得到的回答
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯