C 别名的语法

C 别名的语法,c,C,我在看哪个定义为 typedef char*PSTR,*LPSTR 文档中说PSTR是LPSTR的别名。解引用操作符丢失的事实是否足以告诉我它是一个别名?alias是如何声明的?换言之,如果我将此更改为 typedef char*PSTR、PSTR2、*LPSTR 我现在有两个别名吗?如果我添加另一个取消引用的变量会怎么样 typedef char*PSTR、*LPSTR、*LPSTR2别名的意思是 typedef char* PSTR, *LPSTR; 相当于 typedef char *P

我在看哪个定义为

typedef char*PSTR,*LPSTR

文档中说PSTR是LPSTR的别名。解引用操作符丢失的事实是否足以告诉我它是一个别名?alias是如何声明的?换言之,如果我将此更改为

typedef char*PSTR、PSTR2、*LPSTR

我现在有两个别名吗?如果我添加另一个取消引用的变量会怎么样


typedef char*PSTR、*LPSTR、*LPSTR2

别名的意思是

typedef char* PSTR, *LPSTR;
相当于

typedef char *PSTR;
typedef char *LPSTR;
所以它们是完全相同的类型:
char*
的别名。(在第一种形式中必须键入两次
*
,这是C声明语法的一个怪癖。)


顺便说一句,这些不是“未引用变量”。它们是指针类型。

别名的意思是

typedef char* PSTR, *LPSTR;
相当于

typedef char *PSTR;
typedef char *LPSTR;
所以它们是完全相同的类型:
char*
的别名。(在第一种形式中必须键入两次
*
,这是C声明语法的一个怪癖。)


顺便说一句,这些不是“未引用变量”。它们是指针类型。

没有遗漏任何内容。星号周围的空格无关紧要

这:

typedef char *PSTR, *LPSTR;
反过来,这与

typedef char *PSTR;
typedef char *LPSTR;
它们都为类型“pointer to
char
”定义了类型alisaes,但它们之间没有任何联系,事实上它们都是用相同的
typedef
声明的,这无关紧要,主要是在您需要变量(带指针和不带指针)时执行的,例如:


顺便说一句,这是我真正不鼓励的做法(就像问题中的代码一样),因为“隐藏星号”通常是个坏主意。这个星号很重要,它出现在类型中而不是隐藏在类型中会使代码更加清晰。

没有遗漏任何内容。星号周围的空格无关紧要

typedef char* PSTR, PSTR2, *LPSTR;
这:

typedef char *PSTR, *LPSTR;
反过来,这与

typedef char *PSTR;
typedef char *LPSTR;
它们都为类型“pointer to
char
”定义了类型alisaes,但它们之间没有任何联系,事实上它们都是用相同的
typedef
声明的,这无关紧要,主要是在您需要变量(带指针和不带指针)时执行的,例如:

顺便说一句,这是我真正不鼓励的做法(就像问题中的代码一样),因为“隐藏星号”通常是个坏主意。这个星号很重要,它出现在类型中而不是隐藏在类型中会使代码更加清晰

typedef char* PSTR, PSTR2, *LPSTR;
PSTR是指针,LPSTR是指针,但PSTR2是字符。我会用不同的方式来写:

typedef char *PSTR, PSTR2, *LPSTR;
显示*真正关联的位置

PSTR是指针,LPSTR是指针,但PSTR2是字符。我会用不同的方式来写:

typedef char *PSTR, PSTR2, *LPSTR;
显示*真正关联的位置