参考《C深度剖析》
typedef基本用法
typedef struct student
{
//code
}Stu_st,*Stu_pst;//命名规则请参考本章前面部分
A),struct student stu1;和Stu_st stu1;没有区别。
B),struct student *stu2;和Stu_pst stu2;和Stu_st *stu2;没有区别。
C),const Stu_pst stu3;
D),Stu_pst const stu4;
C),D)里const修饰的分别是stu3,stu4这2个指针。
const修饰谁都时候完全可以将数据类型名视而不见。
typedef与#define
#define是在预处理实现简单替换的。
typedef是在编译时处理数据类型的,和普通的变量定义一样。
E),#define INT32 int
unsigned INT32 i = 10;
F),typedef int int32;
unsigned int32 j = 10;//出错
再举例:
#define int_ptr int*
int_ptr a,b;
typedef char* char_ptr;
char_ptr c,d;
a是int*型,b是int型;
c和d都是char*型;
typedef更深入的应用
typedef int (*MYFUN)(int); //MYFUN是一个类型,该类型的变量是一个指向函数的指针,该函数有两个整形形参,返回值为整形。
用法:
- MYFUN FUN;
- char glFun(int a){ return;}
- void main()
- {
- FUN = glFun;
- (*FUN )(2);
- }
typedef int vector[10]; //vector是一种类型,该类型的变量是一个含有10个整型元素的数组。
使用:
vector vector1; //vector1是一个含有10个整型元素的数组。
也可以是typedef int vector[10] array;使用方法为array vector1;