求解答c语言结构体定义中typedef的作用

看大部分C代码中,定义结构体总是要使用typedef关键字,求高手给解答下这个关键字的用途,比如有代码如下:typedefstructtagMyStruct{intiNu... 看大部分C代码中,定义结构体总是要使用typedef关键字,求高手给解答下这个关键字的用途,比如有代码如下:
typedef struct tagMyStruct
{
int iNum;
long lLength;
} MyStruct;
上面的代码写成如下不是更简单吗:
struct MyStruct
{
int iNum;
long lLength;
};
展开
 我来答
仁昌爱娱乐
高粉答主

2020-02-03 · 专注关心娱乐
仁昌爱娱乐
采纳数:760 获赞数:459752

向TA提问 私信TA
展开全部

c语言结构体定义中typedef的作用是为一种数据结构体定义一个新名字。

在c语言中使用typedef帮助定义结构体,对于声明结构体变量,便可以直接使用typedef xxx(结构体名 对象名)的形式,而没必要带上struct关键词。实际项目C代码中,结构体的定义一般都使用了typedef,在大量使用结构体变量的场合,这样会省事很多。

扩展资料:

在编程中typedef能够给一个还未完全声明的类型起新名字。C语言编译器支持这种做法。typedef和#define不同,它不是简单的文本替换。如果定义中包含表达式,必须使用括号。

typedef符合范围规则,使用typedef定义的变量类型其作用范围限制在所定义的函数或者文件内(取决于此变量定义的位置),而宏定义则没有这种特性。与auto、extern、mutable、static、register等关键字不能出现在同一个结构体定义中。

wanglixin1001
推荐于2017-11-25 · TA获得超过4173个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:845万
展开全部
写成下面的是简单,但是定义一个结构体变量的时候呢就麻烦了。
要写成struct MyStruct ms;这样定义。
而上面的有typedef的则不要,直接写MyStruct ms;这样

即typedef struct tagMyStruct MyStruct;后,原先定义结构体变量需要
struct tagMyStruct ms;
现在只要写成MyStruct ms了。
更多追问追答
追问
还是不太明白,比如这样,我要使用的结构体变量名称就是MyStruct,然后如果我不用typedef关键字的话,我不能直接用下面的代码来定义吗?
struct MyStruct
{
int iNum;
long lLength;
};
必须要如下这样才可以使用MyStruct变量?
struct tagMyStruct
{
int iNum;
long lLength;
};
struct tagMyStruct MyStruct;
下面分明多了一行,更麻烦了吗
追答
不要一会MyStruct一会tagMyStruct的,要明白问题的所在。
就是下面的意思:
如果定义为:
struct MyStruct
{
int iNum;
long lLength;
};
那么必须struct MyStruct ss;这样定义变量
如果定义为:
typedef struct MyStruct
{
int iNum;
long lLength;
} MyStruct;
那么就可以MyStruct ss这样定义了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
苍紫幽蓝
2013-01-24 · TA获得超过440个赞
知道小有建树答主
回答量:207
采纳率:80%
帮助的人:157万
展开全部
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。

typedef struct tagMyStruct
{
int iNum;
long lLength;
} MyStruct;
这种定义之后,之后定义struct tagMyStruct结构体变量时,可以直接使用MyStruct代替struct tagMyStruct,例如MyStruct a。
注意如果没有使用typedef,下面这种模式:
struct MyStruct
{
int iNum;
long lLength;
};
那么定义结构体变量必须 struct MyStruct a这种方式定义。

所以typedef有简化变量声明的作用,还有就是在跨平台方面有很大作用,定义机器无关类型。
c++标准库使用的 typedef 来创建平台无关类型例如size_t,ptrdiff 和 fpos_t 。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tlyzbcy
2013-01-24 · TA获得超过892个赞
知道小有建树答主
回答量:571
采纳率:100%
帮助的人:446万
展开全部
C里面在定义结构体类型的变量时要有struct关键字,如果按照你下面的写法就必须写成:
struct MyStruct a;
但是使用typedef则是为结构体类型给了一个新名字,按原先上面的写法就直接写成:
MyStruct a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逍遥足球子
2013-01-24 · TA获得超过344个赞
知道答主
回答量:236
采纳率:0%
帮助的人:101万
展开全部
加上typedef意为标签式定义,在结构体定义之后,在定义类型时直接可以用结构体的名字去定义对象。而不加上typedef的话为类型名定义,也就要求之后再定义对象时需要加上 struct MyStruct 才可以进行对象定义。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式