文档介绍:用typedef定义类型
功能:用自定义名字为已有数据类型命名
类型定义简单形式: typedef type name;
define typedef
预编译时处理编译时处理
简单字符置换为已有类型命名
例 typedef int INTEGER;
类型定义语句关键字
已有数据类型名
用户定义的类型名
例 typedef float REAL;
类型定义后,与已有类型一样使用
例 INTEGER a,b,c;
REAL f1,f2;
int a,b,c;
float f1,f2;
说明:
typedef 没有创造新数据类型
typedef 是定义类型,不能定义变量
typedef 与 define 不同
例定义数组类型
int a[100];
int ARRAY[100];
typedef int ARRAY[100];
ARRAY a,b,c;
例定义指针类型
char *str;
char *STRING;
typedef char *STRING;
STRING p,s[10];
例定义函数指针类型
int (*p)();
int (*POWER)();
typedef int (*POWER)();
POWER p1,p2;
例定义结构体类型
struct date
{ int month;
int day;
int year;
}d;
例定义结构体类型
struct date
{ int month;
int day;
int year;
}DATE;
例定义结构体类型
typedef struct date
{ int month;
int day;
int year;
}DATE;
例定义结构体类型
DATE birthday, *p;
typedef定义类型步骤
按定义变量方法先写出定义体如 int i;
将变量名换成新类型名如 int INTEGER;
最前面加typedef 如 typedef int INTEGER;
用新类型名定义变量如 INTEGER i,j;
int a[100],b[100],c[100];
char *p;
char *s[10];
int (*p1)(),(*p2)();
struct date
{ int month;
int day;
int year;
}birthday, *p;
类型定义可嵌套
例 typedef struct club
{ char name[20];
int size;
int year;
}GROUP;
typedef GROUP *PG;
PG pclub;
GROUP *pclub;
struct club *pclub;
GROUP为结构体类型
PG为指向GROUP的指针类型
指针和结构体在《数据结构》中的应用
结构体的组合功能
指针的关系描述功能
+
1。结构体的组合功能
例 struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
同理,一种数据结构也需要多个数据来描述,所以也可以用结构体来把这些数据组合在一起形成一个用户定义类型。数据存储结构的设计问题!
线性表顺序映像的 C 语言描述
(存储结构)
typedef struct {
} SqList; // 俗称顺序表
ElemType *elem; // 存储空间基址
int length; // 线性表当前长度
int listsize; // 当前分配的存储容量
// (以sizeof(ElemType)为单位)
//----- 栈的顺序存储表示-----
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
typedef struct {
SElemType *base;
SElemType *top;
int stacksize;
} SqStack;
#define MAXQSIZE 100 //最大队列长度
typedef struct {
QElemType *base; // 动态分配存储空间
int front; // 头指针,若队列不空,
// 指向队列头元素
int rear; // 尾指针,若队列不空,指向
// 队列尾元素的下一个位置
} SqQueue;
循环队列——顺序映象