黑马程序员——【C语言】typedef的用法

来源:互联网 发布:淘宝怎么样发布宝贝 编辑:程序博客网 时间:2024/05/16 18:09

------- android培训、java培训、IOS培训期待与您交流! ----------



一、基本定义:声明一个新的类型名来代替已有的类型,从而我们方面使用。

二、使用typedef的场合:

1>基本数据类型

2>指针

3>结构体

4>枚举

5>指向函数的指针

下面分别举例来说明一下具体用法

1.1定义基本数据类型

typedef int Myint; //Myint 新的类型名 相当于给int取了个别名

//这里就可以用这个别名来定义int类型的变量

Myint a=10;

同样的基本类型的其他数据类型(float、double、char)都可以利用这种定义方式。

2.1指针

typedef char* String;

String name="tom";

3.1结构体

首先定义一个结构体类型:

struct Student

{

int age ;

char name;

};

通常情况下我们定义一个结构体变量的时候这么做:

struct  Student stu; 如果还想再定义一个 只能在写一遍 struct  Student stu2; 很麻烦。所以这里我们利用typedef来定义:

第一种方式:

struct Student

{

int age ;

char name;

};

typedef struct Student Mystu;

第二种方式:

typedef struct Student (Student 也可以省略

{

int age ;

char name;

} Mystu;

4.1枚举

定义枚举类型原理和定义结构体类型类似。

enum Sex {Man,Woman,Unkown};

typedef enum Sex Mysex;

Mysex s=Man;

或者 

typedefenum Sex Mysex {Man,Woman,Unkown};

或者 typedefenum Sex (这里的Sex也可以省略){Man,Woman,Unkown}Mysex;

5.1定义指向函数的指针

首先写一个正常情况下(不用typedef)指向函数的指针:

int sum(int a, int b)

{

return a + b;

}

int main()

{

//定义一个指针指向sum函数

int (*p) (int, int)=sum;

return 0;

}

如果下次我们还想在main函数中定义一个指针指向sum2 函数,还得再写int (*p) (int, int)=sum2; 这样很复杂,所以我们引用了typedef,就会变得很简洁。

typedeint (*MyPoint) (int, int); //Mypoint 就是我们定义指向函数指针的类型名称

int sum(int a, int b)

{

return a + b;

}

int sum2(int a, int b)

{

return a + b;

}

int main()

{

//这样写就变得很简洁

Mypoint p = sum;

Mypoint p2 = sum2;

return 0;

}

补充:typedef 与宏的区别

例如:

#define String2 char*

typedef char * String;

String s1,s2;

s1="tom"; s2="rose";

String2 s3,s4;

区别在于用法上的不同:这里的变量s1,s2是char * 指针,而s3是char * 指针,s4只是char 类型。



0 0