typedef问题(C语言)

typedef问题(C语言),第1张

【第一个问题】

typedef 是用来给类型别名的(注意:只是定义别名,不是定义变量)。例如:

struct Element {

char name[10]

int age

}

typedef Element ElementType

则以下两种定义变量的方法是完全等价的。

struct Element e

ElementType e

同样的也可以这样定义别名:

typedef Element *ElementPtr

则以下三种定义变量的方法是完全等价的。

struct Element *p

ElementType *p

ElementPtr p

另外,也可以像下面这样,在定义类型的同时,连别名也一起定义好了:

typedef struct Element {

char name[10]

int age

} ElementType, *ElementPtr

【第二个问题】

要注意橘此塌,在C/C++中,“T[2]”这样的表达式,不一定是数圆圆组,也可能是指针!

如果T是指针,则T[2]等价于 *(T+2)。扒态

你给的例子里,指针T是有定义的(函数的第一个参数)。

你的这两个定义是不可以同时出现运指在程序中的,因此我替你改了一下,租拍在后一个名字中加了一个字母p。

typedef struct node

{

int data

struct node *next

}linklist

typedef struct node

{

int data

struct node *next

} *plinklist

于是可以进行如下引用:

linklist l

plinklist p

其中l是一个结构,而p是一个结构指针旁型配。

此后可以这样用:

p = &l

p->data = 1

等等。

typedef 使用的格式如下:

typdef 旧类型 新类型

其中新类型是分号前面的最后一个字符串,typdef和新类型之间的字符串称为旧类型;比如PERSON是新类型,struct data就是旧类型。LINK是新类型,PERSON * 就是旧类型。

你在使用结构体类型的时候,写struct data p;或者PERSON p;的效果是一模一样的;你写PERSON * pp和LINK pp的效果是一模一样的。

因此typdef就是对一种类型进行重命名或重命名的。就是对旧类型从新命名为新的类型,这者此样的新的类型名和旧的庆桥类型名都可以用了。类型重定义后的巨大好处就是你的软件不依赖于C提供誉嫌猛的基本类型了,这样在移植代码的时候就很方便了,而且能为代码阅读提供更好的帮助。这段话希望你要深刻理解,即使不理解,记下来,以后有经验了你也会有体会。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12237905.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存