#define
只是简单的文本替换工具,而不像 typedef
那样具有类型定义的功能。
1、使用#define:#define INT1 int*
#define
是一个简单的文本替换工具。当编译器遇到 INT1 p1, p2;
时,它会将 INT1
替换为 int*
,因此变量声明会变成:
int* p1, p2;
在这种情况下:
-
p1
被声明为一个指针变量(int*
)。 -
p2
被声明为一个整型变量(int
)
2、使用 typedef int* INT2;
的情况
-
typedef
是用于创建新的类型名称。INT2
被定义为int*
,因此变量声明INT2 p3, p4;
会扩展为:int* p3, int* p4;
在这种情况下:
-
p3
和p4
都被声明为指针变量(int*
)。 -
#define
的作用:INT1
替换后的声明int* p1, p2;
中,p1
被声明为指针,而p2
被声明为整型变量。这是因为int* p1, p2;
的语法表示p1
是指针,而p2
是整型。 -
typedef
的作用:INT2
作为类型定义,INT2p3, p4;
会明确地将p3
和p4
声明为指针变量。 -
为什么
p2
是一个整型变量而不是指针变量?这是因为
INTPTR1
是通过#define
定义的,#define
只是简单的文本替换工具,而不像typedef
那样具有类型定义的功能。 -
#define
的作用:INT1
替换后的声明int* p1, p2;
中,p1
被声明为指针,而p2
被声明为整型变量。这是因为int* p1, p2;
的语法表示p1
是指针,而p2
是整型。 -
typedef
的作用:INT2
作为类型定义,INT2p3, p4;
会明确地将p3
和p4
声明为指针变量。