使用typedef定义数据类型

我们在C语言的关键字表中能够找到关键字typedef,它的意义是为复杂的声明定义简单的别名。对于这个单词,我们可以拆解,type为类型的意思,def是define(定义)的缩写。所以typedef的意义是为复杂的声明定义简单的别名。

关键字typedef用于为系统固有的或用户自定义的数据类型定义一个别名。假设有一个结构用三个坐标x,y,z表示一个点。它的定义如下:

struct pts
{
   int x;
   int y;
   int z;
};

结构也是一种数据类型,那么关键字typedef也能为其定义一个别名。我们就用关键字typedef为这个结构定义一个更方便的名字point,语句如下:typedef struct pts point;//这条语句指定名称point是struct pts的同义字。

利用typedef为数据类型定义一个别名后,有什么用途吗?例如上述利用typedef为结构struct pts定义一个别名point后,可以怎么用呢?

答:在定义结构变量时,有struct pts start_pt;因为typedef struct pts point;这条语句指定名称point是struct pts的同义字。所以在struct pts start_pt;这条语句中,利用等量代换,有point start_pt;即声明一些变量时,可以有以下语句:

point start_pt;
point end_pt;

typedef除了可以为结构定义别名外,还可以为基本的数据类型重新定义名称,以反映变量的含义。例如当程序涉及到不同种类物品的价格,如苹果的价格和衣服的价格,此时类型名称定义为double的同义词。

typedef double price;
//可以使用price声明变量
price apple;
price clothes;
//这些变量都是double类型,只是price是double的同义字

总结:typedef只是为一种已经存在的数据类型定义一个新的名称而已,并非定义一种新的数据类型。

下面我们通过一个例子来加深对typedef的理解:

//输入n个学生的信息,输出最高分学生的信息
#include<stdio.h>

typedef struct student
{
   char ID[10];
   char name[10];
   char sex;
   float score;
}STUDENT;

int main()
{
   STUDENT stu,first;
   int n,i;

   printf("请输入学生人数:");
   scanf("%d", &n);
   first.score = -1;  //把临时最优值first的成绩赋初始值-1
   printf("请输入%d个学生的信息(学号 姓名 性别 成绩):\n", n);
   
   for(i=1; i<=n; i++)
   {
      scanf("%s",stu.ID);
      scanf("%s",stu.name);
      scanf("%*c%c",&stu.sex);
      scanf("%f", &stu.score);
 
      if(stu.score > first.score)
         first = stu;
   }

   printf("最高分学生的信息如下:\n");
   printf("学号:%s\n",first.ID);
   printf("姓名:%s\n",first.name);
   printf("性别:%c\n",first.sex);
   printf("成绩:%4.1f\n",first.score);
   return 0;
}

STUDENT stu, first;//这条语句声明两个STUDENT类型的结构变量,first用来保存当前分数最高的学生信息,first.score初始存放一个最小值,stu来循环接受每次读入的学生信息。

总结:利用typedef可以为数据类型起一个别名。

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值