繁体   English   中英

typedef结构体和指针

[英]typedef struct and pointer

当我们有:

      struct node{.....}
      typedef struct node Node;
      typedef Node *ptr;

ptr是指向struct节点或typedef的指针会改变它的含义吗?

定义

typedef struct node *ptr;

ptr作为struct node *的别名。

之后,您可以执行任一操作

struct node *some_pointer;

要么

ptr some_pointer;

两者都将变量some_pointer定义为指向node结构的指针。

但是 ,我不建议进行指针类型的类型别名。 它会使代码更难以阅读,理解和维护。

以我在这里在堆栈溢出中看到的最常见的问题为例,它涉及到指针类型别名:

ptr some_pointer = malloc(sizeof(ptr));

这样就分配了足够的内存来指向结构的指针 ,而不是整个结构。 如果使用例如

Node *some_pointer = malloc(sizeof(Node*));

该错误将更加清晰和容易找到。

请参见使用typedef指针是一个好主意吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM