33、别名

1、别名

别名字面上可以理解为为一个已经存在的数据类型名称建立另一个别名。两者不冲突,可共同使用.这样,在编写代码时,更加地简洁、精简

1.1、使用场合
  • 基本数据类型
  • 指针
  • 结构体
  • 枚举
  • 指向函数的指针
2、typedef

typedef 类型名 [新类型名];

3、案例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<stdio.h>
// int别名
typedef int Mint;
// 字符串别名
typedef char* String;
// 结构体别名
typedef struct{int age;String name;} Person;
// 枚举别名
typedef enum sex{Men,Woman,Unknown} Sex;
// 指向函数的指针
typedef int (*Fpoint)(int,int);

int sum(int a,int b)
{
return a+b;
}

int main()
{
Mint a = 10;
String name = "xiaobei";
printf("name=%s\n",name);
printf("a=%d\n",a);
Person p = {20,"xiaoming"};
printf("p.age=%d\n",p.age);
printf("p.name=%s\n",p.name);
Sex s = Men;
printf("s=%d\n",s);

Mint b = 20;
Fpoint fp = sum;
printf("a+b=%d\n",fp(a,b));
return 0;
}
4、运行结果

运行结果

5、使用注意
5.1、代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
#define String2 char*
typedef char* String;

int main()
{
String s,ss;
s = "ss";
ss = "sss";
String2 sss,ssss;
sss = "ssss";
ssss = "sssss";
return 0;
}
5.2、运行结果

运行结果

5.3、分析

首先 define是预处理,也就是说,但代码String2 sss,ssss; 就是替换成 char *sss,ssss;因此变量ssss是个字符,而不是个字符串变量