
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提供誉嫌猛的基本类型了,这样在移植代码的时候就很方便了,而且能为代码阅读提供更好的帮助。这段话希望你要深刻理解,即使不理解,记下来,以后有经验了你也会有体会。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)