黑马程序员——C语言基础——typedef的用法

来源:互联网 发布:淘宝评价系统默认评论 编辑:程序博客网 时间:2024/05/04 16:10
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1.typedef的定义和作用

typedef是C语言的关键字,作用是为一种数据类型定义一个新名字。数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。

在编程中使用typedef目的一般有两个:

1,给变量一个易记且意义明确的新名字,

2,简化一些比较复杂的类型声明。

2.typedef的使用

1>定义基本数据类型

例如:typedef int MyInt;

另外,可以在别名的基础上再起一个别名。如:typedef MyInt MyInt2;

2>定义结构体类型

结构体的定义有三种方式:

第一种方式: 先定义结构体再定义typedef

struct Person {      int age;  };  typedef struct Person Person; 

第二种方式:定义结构体的同时定义typedef

typedef struct Person{     int age;  }Person;  
第三种方式:
typedef struct {     int age;  }Person; <span style="color: black; font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px; font-size: 9px; background-color: inherit;"> </span>

3>定义指针类型

定义普通类型的指针

<pre name="code" class="objc">typedef char *String;

定义结构体的指针两种方式

第一种方式:

struct Person {  // 第一种      int age;  };  typedef struct Person *PersonPoint;

第二种方式:

typedef struct Person {  // 第二种      int age;  }* PersonPoint;

4>定义枚举类型

定义枚举类型也有两种方式:

第一种方式是定义已经定义的枚举类型

enum Season {  spring ,  summer,   autumn,  winter  };  typedef enum Season Season; 
第一种方式是定义枚举类型的同时定义别名
typedef enum{   spring,  summer,   autumn,  winter  }Season; <span style="color: black; line-height: 18px; font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px; background-color: inherit;"> </span>

5>定义指向函数的指针

// 这里与其他类型不同MyMethod即为别名 typedef int (*MyMethod)(int ,int); int minus(int a,int b)  {      return a + b;  }  int sum(int a, int b)  {      return a +b;  }  // 使用定义的类型指向函数  MyMethod MySum = sum;  MyMethod  MyMinus = minus;  // 注意这里MyMethod不用加* <span style="color: black; font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px; font-size: 9px; background-color: inherit;">  </span>

3.typedef与#define的区别

#define是预处理指令,是在程序运行之前替换代码,只替换代码而不进行运算等操作

typedef是定义一个新名(别名)

从下面的例子中可以看出二者的差别:

#define String1 char *

typedef char *String2;

String1 s1,s2;  // 此处等价于char *s1;chars2;

String2 s3,s4;  // 此处等价于char *s3;char*s4




0 0
原创粉丝点击