C 为什么使用typedef中的指针?
看到这个结构了吗C 为什么使用typedef中的指针?,c,C,看到这个结构了吗 typedef struct Node{ void *data; int pos; struct Node *prev; struct Node *next; }*lptr; 我想知道为什么节点的typedef是*lptr而不是lptr。 指针有什么区别?类型定义用于指针类型 lptr是类型struct Node*类型def是指针类型 lptr是类型struct节点*,尽管通常有两个typedefs-一个用于struct以避免标记,另一个用于s
typedef struct Node{
void *data;
int pos;
struct Node *prev;
struct Node *next;
}*lptr;
我想知道为什么节点的typedef是*lptr
而不是lptr
。
指针有什么区别?类型定义用于指针类型
lptr
是类型struct Node*
类型def是指针类型
lptr
是类型struct节点*
,尽管通常有两个typedef
s-一个用于struct
以避免标记,另一个用于struct
指针以避免星号,如下所示
typedef struct Node{
void *data;
int pos;
struct Node *prev;
struct Node *next;
} Node;
typedef Node* lptr;
如果作者希望避免在lptr
或Node
后写星号,他们当然可以typedef
指向struct节点的指针
,尽管通常有两个typedef
s-一个用于struct
以避免标记,一个用于struct
指针以避免星号,如下所示
typedef struct Node{
void *data;
int pos;
struct Node *prev;
struct Node *next;
} Node;
typedef Node* lptr;
如果作者希望避免在lptr
或Node
后写星号,他们当然可以typedef
指向struct节点的指针,因为定义(typedef)是指向指针类型的。删除它将使lptr成为Node类型,*将使其成为指向节点的指针。因为定义(typedef)是指向指针类型。删除它将使lptr成为Node类型,*将使其成为指向节点的指针。IMHO,使用typedefs隐藏指针不是一个好做法。您不能查看声明并确定它是指针还是结构;您必须始终返回typedef。如果你从不在typedefs中隐藏指针,你就不会有这个问题。有人同意吗?大多数程序员都同意在typedef中隐藏指针是一种糟糕而危险的做法。然而,问题是为什么typedef中有一个指针,而不是它是否是良好的实践。这是一个完全正确的问题,没有理由投反对票。@Lundin,我没有投反对票,只是作为评论表达了我的意见。:-)依我看,用typedefs隐藏指针不是一个好的做法。您不能查看声明并确定它是指针还是结构;您必须始终返回typedef。如果你从不在typedefs中隐藏指针,你就不会有这个问题。有人同意吗?大多数程序员都同意在typedef中隐藏指针是一种糟糕而危险的做法。然而,问题是为什么typedef中有一个指针,而不是它是否是良好的实践。这是一个完全正确的问题,没有理由投反对票。@Lundin,我没有投反对票,只是作为评论表达了我的意见。:-)