目录
1. 什么是typedef
typedef是 C 和 C++ 语言中的一个关键字,用于为已有的数据类型定义新的名称(别名)。它的主要作用是增强代码的可读性和可维护性,使得程序员可以更方便地使用复杂数据类型或者简化长类型名的书写。
简化复杂类型名称: 使用typedef可以将复杂的类型名简化为一个更简单的别名,提高代码的可读性。
跨平台开发: 在跨平台开发中,typedef可以帮助隐藏不同平台下的类型差异,提高代码的可移植性。
模块化设计: 有助于将数据类型的定义和使用分离开来,使程序更易于维护和修改。
2. typedef的用法
2.1 对于数据类型的重定义
使用 typedef 定义类型名后,原类型名作用不变,我们可以通过typedef对基本数据而理性进行重定义例如:
typedef int i;
typedef char ch;
typedef long long int lli;
这样我们在后续使用这些数据类型时可以这样写:
i a = 5;
lli b = 10;
ch c = 'a';
他们等价于:
int a = 5;
long long int b = 10;
char c = 'a';
2.2 对于函数的重定义
typedef定义了OperationFunc类型,它表示一个函数指针,可以指向接受两个整数参数并返回整数的函数。这样,使用OperationFunc类型来声明函数指针变量op,可以避免每次声明函数指针时都需要写出完整的指针语法:
#include <stdio.h>
// 定义一个函数指针类型,用 typedef 简化声明
typedef int (*OperationFunc)(int, int);
// 定义两个函数,用于加法和乘法
int add(int a, int b) {
return a + b;
}
int multiply(int a, int b) {
return a * b;
}
int main() {
int result;
OperationFunc op; // 使用 typedef 后的函数指针类型
op = add; // 将函数指针指向加法函数
result = op(3, 4); // 调用加法函数
printf("3 + 4 = %d\n", result);
op = multiply; // 将函数指针指向乘法函数
result = op(3, 4); // 调用乘法函数
printf("3 * 4 = %d\n", result);
return 0;
}
注意,typedef并不用于定义函数本身,而是用于定义类型别名,包括指向函数的指针类型。因此,你不能使用typedef来为函数本身提供别名,例如这样是不合法的:
typedef int myFunction(int); // 错误,不能给函数本身起别名
2.3 对于指针的重定义
typedef int* PTRINT;
以上就是给int* 起了一个新的名字PTRINT。可定义int类型指针变量如:
PTRINT x;
其等价于:
int* x
实际代码使用:
#include<stdio.h>
typedef int* PTRINT;
int main()
{
int a = 0;
PTRINT b = &a;
int* c = &a;
printf("a:%d\na:%p\n", a, &a);
printf("b:%d\nb:%p\n", *b, b);
printf("c:%d\nc:%p\n", *c, c);
return 0;
}
</