C 语言 - typedef
C typedef
typedef 关键字允许您为现有类型创建一个新名称(别名)。这可以使复杂的声明更易于阅读,并使您的代码更易于维护。
例如,我们可以不总是写 float,而是创建一个名为 Temperature 的新类型,使代码更清晰:
实例
#include <stdio.h>
typedef float Temperature;
int main() {
Temperature today = 25.5;
Temperature tomorrow = 18.6;
printf("Today: %.1f C\n", today);
printf("Tomorrow: %.1f C\n", tomorrow);
return 0;
}
在这里,Temperature 只是 float 的另一个名称。然而,代码更具表达力:它告诉我们这些数字是温度,而不仅仅是任何浮点数。
为什么要使用 typedef?
- 简化代码:类型名称更短、更易读。
- 提高清晰度:更好地表达意图(例如,用
AGE而不是仅仅int)。当许多变量共享相同的基础类型(如float或double)时,也有助于避免混淆。
补充说明:在现代 C 语言中,typedef 通常与 struct、enum 和函数指针一起使用,以保持代码整洁和易于阅读。
typedef 与结构体结合使用
typedef 与 struct 结合使用很有用,因为它可以避免每次都写 struct:
实例
#include <stdio.h>
// 不使用 typedef:
struct Car {
char brand[30];
int year;
};
// 使用 typedef:
typedef struct {
char brand[30];
int year;
} Car;
int main() {
struct Car car1 = {"BMW", 1999}; // 需要 "struct"
Car car2 = {"Ford", 1969}; // 使用 typedef 更简短
printf("%s %d\n", car1.brand, car1.year);
printf("%s %d\n", car2.brand, car2.year);
return 0;
}
这个示例展示了 typedef 如何使处理多个结构体变量(例如不同的汽车型号)变得更容易:
实例
#include <stdio.h>
// With typedef
typedef struct {
char brand[30];
char model[30];
int year;
} Car;
int main() {
Car car1 = {"BMW", "X5", 1999};
Car car2 = {"Ford", "Mustang", 1969};
Car car3 = {"Toyota", "Corolla", 2011};
printf("%s %s %d\n", car1.brand, car1.model, car1.year);
printf("%s %s %d\n", car2.brand, car2.model, car2.year);
printf("%s %s %d\n", car3.brand, car3.model, car3.year);
return 0;
}
在这里您可以看到,当结构体嵌套在其他结构体中时,typedef 如何保持代码整洁:
实例
#include <stdio.h>
// 使用 typedef 定义三个结构体
typedef struct {
char firstName[20];
char lastName[20];
} Owner;
typedef struct {
char brand[20];
int year;
Owner owner;
} Car;
typedef struct {
char name[30];
Car featuredCar;
} Dealership;
int main() {
Owner person = {"John", "Doe"};
Car car1 = {"Toyota", 2010, person};
Dealership d = {"City Motors", car1};
printf("Dealership: %s\n", d.name);
printf("Featured Car: %s (%d), owned by %s %s\n",
d.featuredCar.brand,
d.featuredCar.year,
d.featuredCar.owner.firstName,
d.featuredCar.owner.lastName);
return 0;
}
是否使用 typedef 由您自己决定。不使用它,您的代码也能正常工作。然而,在现代 C 语言中,它经常被用来使代码更简短、更清晰、更易于维护。