你的位置:首页 > 操作系统

[操作系统]【学习笔记】【C语言】typedef


1.概念

我们可以使用typedef关键字为各种数据类型定义一个新名字(别名)。

2.作用:给已经存在的类型起一个新的名称

3.使用场合:
 1> 基本数据类型
 2> 指针
 3> 结构体
 4> 枚举
 5> 指向函数的指针

4.代码

 1 #include <stdio.h> 2  3 typedef int MyInt; 4 typedef MyInt MyInt2; 5  6 // 给指针类型char *起一个新的类型名称String 7 typedef char * String; 8  9 /* 10 struct Student 11 { 12   int age; 13 }; 14 typedef struct Student MyStu; 15 */ 16  17 /* 18 typedef struct Student 19 { 20   int age; 21 } MyStu; 22 */ 23  24  25 typedef struct 26 { 27   int age; 28 } MyStu; 29  30 /* 31 enum Sex {Man, Woman}; 32 typedef enum Sex MySex; 33 */ 34  35 typedef enum { 36   Man, 37   Woman 38 } MySex; 39  40  41 typedef int (*MyPoint)(int, int); 42  43 int minus(int a, int b) 44 { 45   return a - b; 46 } 47  48 int sum(int a, int b) 49 { 50   return a + b; 51 } 52 /* 53 struct Person 54 { 55   int age; 56 }; 57  58 typedef struct Person * PersonPoint; 59 */ 60  61 typedef struct Person 62 { 63   int age; 64 } * PersonPoint; 65  66 int main() 67 { 68   // 定义结构体变量 69   struct Person p = {20}; 70    71   PersonPoint p2 = &p; 72    73   //struct Person *p2 = &p; 74    75   //MyPoint p = sum; 76   //MyPoint p2 = minus; 77   //int (*p)(int, int) = sum; 78    79   //int (*p2)(int, int) = minus; 80    81   //p(10, 11); 82    83    84   //MySex s = Man; 85   //enum Sex s = Man; 86   //enum Sex s2 = Woman; 87    88  // struct Student stu3; 89   //MyStu stu = {20}; 90   //MyStu stu2= {21}; 91    92   return 0; 93 } 94  95 void test2() 96 { 97   String name = "jack"; 98    99   printf("%s\n", name);100 }101 102 void test()103 {104   int a;105   MyInt i = 10;106   MyInt2 c = 20;107   108   MyInt b1, b2;109   110   printf("c is %d\n", c);111 }

使用注意

 1 #include <stdio.h> 2  3 //#define Integer int 4  5 //typedef int Integer; 6  7 //typedef unsigned long int MyInt; 8  9 #define String2 char *10 11 typedef char * String;12 13 int main()14 {15   /*16   int a,b;17   int a;18   int b;19   */20   21   //s1、s2是char *指针22   String s1, s2;23   /*24    String s1;25    String s2;26   */27   s1 = "jack";28   s2 = "rose";29   30   // s3才是char *指针,s4只是char31   String2 s3, s4;32   /*33   char *s3, s4;34   char *s3;35   char s4;36   */37   //String2 s3 = "jake";38   39   /*40   String s1;41   String s2;42   */43   44   45   46   47   //Integer i = 10;48   49   return 0;50 }