[英]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*));
该错误将更加清晰和容易找到。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.