A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.概念及语法格式
C语言不仅提供了丰富的数据类型,而且允许用户自定义类型说明符,也就是说允许由用户位数据类型取【别名】。

typedef定义的一般形式为:
typedef 元类型名 新类型名;
一种原类型名中含有定义部分,新类型名一般用大写表示,以便于区分。
例如:
  1.     typedef int AMOS;//取别名后,与原来型无区别
  2.     AMOS sum = 1000;
  3.     printf("sum = %d", sum);
复制代码
打印结果:
sum = 1000

2.typedef的使用方法
直接上代码:
  1. #include <stdio.h>
  2. //定义一个结构体
  3. struct Student{
  4.     int num;
  5.     char *name;
  6.     int age;
  7. };

  8. int add(int a, int b){
  9.     return a + b;
  10. }

  11. int main(int argc, const char * argv[])
  12. {

  13.     //1.用在基本类型
  14.     typedef int AMOS;
  15.     AMOS a = 4;
  16.     printf("a = %d\n", a);
  17.     //2.用在数组
  18.     typedef int ARRAY[5];
  19.     ARRAY b = {1,2,3,4,5};//相当于int b[5] = {1,2,3,4,5};
  20.     printf("数组b的元素:");
  21.     for (int i = 0; i < 5; i++) {
  22.         printf("%d ", b[i]);
  23.     }
  24.     //3.用在结构体,用法一
  25.     typedef struct Student STUDENT;
  26.     STUDENT stu;
  27.     stu.num = 1;
  28.     stu.name = "Amos";
  29.     stu.age = 24;
  30.     printf("\n结构体\nnumber: %d, name: %s, age:%d",stu.num,stu.name,stu.age);
  31.    
  32.     //用在结构体,用法二
  33.     typedef struct {//此处的结构体名可以不写
  34.         int hour;
  35.         int minitue;
  36.         int second;
  37.     } Time;
  38.     Time time = {12, 50, 20};
  39.    
  40.     printf("\ntime is: %0d:%0d:%0d\n",time.hour,time.minitue,time.second);
  41.    
  42.     //4.用在枚举类型
  43.     typedef enum {Spring,Summer,Autumn,Winter} Season;//枚举名也可省略
  44.     Season mySeason = Spring;
  45.     printf("Spring's value is : %d\n", mySeason);
  46.    
  47.     //5.用在函数指针
  48.     //先定义一个函数指针
  49.     int (*p)(int, int);
  50.     //给该函数指针定义别名
  51.     typedef int (*FUN)(int, int);
  52.     FUN f1 ,f2;
  53.     f1 = add;
  54.     int sum = f1(1,2);
  55.     printf("f1(1,2) = %d\n",sum);
  56.    
  57.     return 0;
  58. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马