C语言中typedef与define的区别

17 Mar 2025 | 5 分钟阅读

在本主题中,我们将讨论 C 编程语言中 typedefdefine 之间的区别。

typedef vs define in C

typedef

在 C 中,typedef 是一个关键字,用于为现有数据类型定义新名称。但它不能为预定义数据类型提供新的数据类型。相反,它为已有的数据类型(int、char、float 等)提供有意义的名称。它在程序中定义在 main() 函数之外。换句话说,typedef 用于重新定义 C 编程中现有数据类型的名称。

语法

在上面的语法中,existing _name 定义了预定义的数据类型或变量名。'alias _name' 或 newName 定义了 C 程序中现有数据类型或变量名的新名称。

示例 1: 考虑一个在 C 中使用 typedef 关键字的程序。

Type.c

输出

Enter the first number: 20
Enter the second number: 10
The sum of the two numbers is: 30

示例 2: 让我们考虑另一个程序,在 C 中为 unsigned char 使用 typedef。

program.c

输出

Demonstrate the use of typedef Keyword
Print a single Byte: D
Print a single Byte: E

在结构中使用 typedef 关键字

让我们考虑一个程序,在该程序中使用 typedef 关键字为 struct 提供新名称,并初始化结构变量,如下所示。

Struct.c

输出

Student Roll No: 30
Student name: Lockie Fergusion
Student Subject: Mathematics
Student Teacher Name: Jasmine

在上面的程序中,我们使用 typedef 关键字为 struct 数据类型定义了一个新名称 Students,并使用它来初始化变量。

define

#define 是预处理器,用于表示各种数据的常量别名。它用于定义 C 中不同数据类型的常量变量。它在 main 程序之外定义。

语法

在上面的语法中,#define 是一个预处理器,它将 token 定义为常量变量名,value 代表 token 值。在预处理器中初始化常量变量后,我们可以在程序中使用该值(通过变量)。

示例 1: 考虑一个在 C 中使用 #define 预处理器的程序。

Define.c

输出

Display the PI Constant value using the #define is: 3.14

示例 2: 考虑一个使用 #define 预处理器在 C 中计算圆面积的程序。

Area.c

输出

Enter the radius of the circle : 5
The area of the circle is: 78

在上面的程序中,我们使用 #define 预处理器将 PI 用作常量变量。当程序执行时,PI 值会自动在程序中调用。

示例 3: 考虑一个程序,演示了 typedef 相对于 #define 在数据类型方面的优势。

Pgrm.c

输出

Sizeof x:8
Sizeof y:8
Sizeof z:8
Sizeof p:8
Sizeof q:1
Sizeof r:1

C 语言中 typedef 和 #define 的区别

typedef 和 #define 的区别如下:

序号Typedef#define
1.Typedef 是 C 编程语言中的一个关键字。#define 是一个预处理器,用作 C 编程中的宏。
2.它是一个关键字,仅用于为现有数据类型提供备用名称。可以使用该名称在程序中初始化变量。#define 用于定义值的别名。
3.由编译器处理。由预处理器处理。
4.它使用分号来终止语句。它不使用分号来终止语句。
5.它定义了新数据类型的实际定义。#define 只是在调用或使用它的地方复制粘贴定义的值。
6.它遵循作用域规则,如果新数据类型在作用域内(函数内部),则新类型名称仅在该数据类型的范围内可见。当预处理器在程序中遇到 #define 时,它会将所有变量的出现替换为定义的值;之后,不再遵循作用域。
7.定义在 main() 函数之外。定义在 main() 函数之外。