利用typedef可以为某一类型自定义名称。这方面和#defint类型。
但是和define又有三处不同:
1. 与#define不同,typedef创建的符号名只受限于类型,不能用于值。
2. typedef由编译器解释,不是预处理器。
3. 在其受限范围内,typedefe比#define更灵活。
什么是使用typedef自定义类型名称?
比如编译器种默认的没有BYTE类型,但是我们想使用BYTE定义一个字节类型,
那么就可以通过
typedef char BYTE;
来指定BYTE类型为一个char类型。
这样就可以使用:
BYTE m_Enable; // 1字节的使能信号。
还可以把typedef用于结构体:
typedef struct Student
{
int Age;
int Fex;
char name[24];
}STUDENG, *PSTUDENG;
源码:
// Len_typedef.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
typedef unsigned char BYTE;
typedef struct Student
{
int Age;
char Fex[4];
char Name[24];
}*PSTUDENG, STUDENG;
void ReadStudent(PSTUDENG pStu)
{
printf("\n");
if (pStu != NULL)
{
printf("\n\taddress = %d", pStu);
printf("\n\tage = %d", pStu->Age);
printf("\n\tFex = %s", pStu->Fex);
printf("\n\tName = %s", pStu->Name);
}
}
int main()
{
BYTE m_enable = 0xff;
STUDENG stu;
stu.Age = 10;
strcpy_s(stu.Fex, "男");
strcpy_s(stu.Name, "张三");
printf("\n\tstu_address = %d", &stu);
ReadStudent(&stu);
}
执行结果:
如上,在给结构体使用了typedef之后,可以重命名为普通类型也可以重命名为指针类型。
这样在定义和作为函数参数的时候,就可以使用不同的类型。