TA的每日心情 | 汗 2024-10-15 10:05 |
---|
签到天数: 372 天 [LV.9]以坛为家II
|
源代码:- /*
- 类型别名的使用:
- 1、基本数据类型别名
- 1.1> int型类型别名:typedef int 别名名称;
- 1.2> int型指针类型别名:typedef int * 别名名称;
- 2、构造数据类型别名
- 2.1> 结构体类型别名:struct 类型名 {类型一; 类型二; 类型三} 别名名称;
- 2.2> 结构体指针类型别名:struct 类型名 {类型一; 类型二; 类型三} * 别名名称;
- 3、枚举数据类型别名:enum 类型名 {成员一, 成员二, 成员三} 别名名称;
- 4、指向函数的指针:函数返回类型 (*别名名称) (形参一, 形参二, 形参三);
- */
- #include <stdio.h>
- int sum(int, int);
- int minus(int, int);
- int main() {
-
- typedef int MyInt; // 定义int型类型别名MyInt;
-
- MyInt a = 10; // 使用新定义的别名定义一个变量并赋值;
-
- printf("a=%d\n", a); // 打印该变量;
- typedef int * IntPoint; // 定义int型指针类型别名IntPoint;
-
- IntPoint ap = &a; // 将变量a的地址赋予 别名定义的指针变量;
-
- *ap = 20; // 用新的指针变量修改变量a的值;
-
- printf("a=%d\n", *ap); // 再次打印a的值,来验证有效性
-
- typedef struct Person {
- char *name;
- int age;
- } Human;
- /*
- 1、如果在Human前加"*",则为定义一个结构体指针的别名
- 2、如果没有关键字"typedef":
- struct Person {
- char *name;
- int age;
- } Human;
- 该定义为结构体定义,并且Human为一个结构体变量
- 3、Person可以省略,因为有了新的别名用来定义变量,不省略则别名,原名都可以使用;
- */
-
- Human man; // 用结构体别名新定义一个结构体变量man,在结构体别名定义的时候不能在后面直接跟man;
-
- man.age = 20; // 给结构体man成员赋值;
-
- man.name = "yusian"; // 给结构体man成员赋值;
-
- printf("name=%s, age=%d\n", man.name, man.age); // 打印成员的值,验证有效性;
-
- typedef enum {
- spring,
- summer,
- autumn,
- winter
- } Seasons; // 类似结构体别名定义,在变量位置跟别名名称;
-
- Seasons b = summer; // 定义变量并赋值;
-
- printf("b=%d\n", b); // 验证有效性;
-
- typedef int (*FunPoint) (int, int); // 定义函数指针别名,类似定义函数指针:int (*p) (int, int),在前加关键字typedef,并将变量名位置替换成别名名称;
-
- FunPoint s = sum; // 用函数别名定义函数指针并赋值;
-
- FunPoint m = minus; // 由于这两种函数类型相同,均为int (int, int),所以可以用同一个别名来定义;
-
- printf("3 + 4 = %d, 5 - 2 = %d\n", sum(3, 4), minus(5, 2)); // 验证有效性;
-
- return 0;
- }
- // 定义一个加法函数;
- int sum(int n1, int n2) {
- return n1 + n2;
- }
- // 定义一个减法函数;
- int minus(int n1, int n2) {
- return n1 - n2;
- }
复制代码 运行结果:- a=10
- a=20
- name=yusian, age=20
- b=1
- 3 + 4 = 7, 5 - 2 = 3
复制代码
|
|