typedef 别名的定义和使用

本文详细介绍了在C语言中定义结构体时,使用typedef创建别名的四种方法,包括结构定义后单独定义别名、在定义结构时同时定义别名、匿名结构以及定义指向结构的指针别名,并给出了相应的范例程序。
摘要由CSDN通过智能技术生成

第一种方式:

定义一个结构,名称为term

struct  term

{

 float  coef;  //系数

 int   expn;  //指数

};

下面定义它的两个别名:

typedef  struct  term  term, ElemType;

以后,就可以用 term 或是 ElemType 来代替 struct  term 了。

第二种方式:

还有一种更简洁的定义方式,就是定义结构的同时定义别名:

struct  term

{

 float  coef;  //系数

 int   expn;  //指数

} term,  ElemType;

注意到,这里,结构的名称是struct  term,它的别名也是term,这是可以的。

第三种方式:

还可以再简化一下,这种定义方式称为匿名结构,就是没有给结构体本身起名字。

struct 

{

  float  coef;  //系数

  int   expn;  //指数

} term,  ElemType;

这里省略了结构的名字,直接写出别名。

范例程序如下:

#include <stdio.h>
#include <stdlib.h> 

//使用第三种定义方式
typedef  struct 
 {
   float coef; /* 系数 */
   int   expn; /* 指数 */
 }term,ElemType; 
 

main()  
{
 term  t1;
 t1.coef=1.5;
 t1.expn=2;	
	
 printf("结构型及其别名\n");	
 printf("coef=%f  expn=%d\n",t1.coef, t1.expn);
}

第四种方式:

定义指向结构的指针的别名:

//定义数据项

typedef  struct

 {

   float  coef; /* 系数 */

   int   expn; /* 指数 */

 }term,ElemType;

//定义链表结点的结构类型:

typedef  struct  LNode

{

 ElemType  data;       //定义结点数据

 struct  LNode *next;  //定义指向下一个结点的指针

}LNode, *Link;

这里,定义了一个链表的结点LNode,它包括一个数据项和一个指针项。

同时定义了这个结点的别名为LNode,代替struct  LNode

还定义了指向这个结点的指针,别名为 Link 用来代替 struct LNode *

指向结点的指针的使用,示例程序:
#include <stdio.h>
#include <stdlib.h>

typedef struct
{
 float  coef;
 int    expn;
}term, ElemType; 


typedef struct LNode
{
ElemType     data;  //结点数据
struct LNode  *next;  //指向结点的指针
}LNode, *Link;

main()
{
 LNode     n1;  //定义一个链表结点
 Link      p1;  //定义指向链表的指针

//对结点的数据域赋值
n1.data.coef = 1.5;
n1.data.expn = 2;

//对结点的指针域赋值
n1.next = NULL;

//使指针p指向这一结点 
p1=&n1;


//打印结点数据
printf("系数项:%f  指数项:%d\n",(*p1).data.coef , (*p1).data.expn );

}

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值