typedef struct person *person_t;
在这种情况下,究竟是什么person_t?它是指向人或人的指针吗? 在C ++中,如果我要向对象声明一个ptr,我会这样做:
person* p;
在这种情况下,这是否意味着我可以写:
person_t p?
感谢。
答案 0 :(得分:2)
person_t
是struct person *
所以你可以拥有
person_t p;
当你这样做时
typedef struct person *person_t;
person_t p;
p
是指向结构struct person
否则,如果你有
typedef struct person person_t;
然后
person_t *p;
将为您提供指向p
PS: 我总是选择后者,我觉得它更具可读性和不那么令人困惑。 (纯IMO)
答案 1 :(得分:0)
它就像指向结构的指针。
struct person *p; // is equivalent to person_t p;
因为你也在输入指针。
person_t p; // it will act like a pointer to structure.
您可以参考此link.
答案 2 :(得分:0)
此声明
typedef struct person *person_t;
为类型person_t
引入了别名struct person *
。因此,您可以互换使用person_t
或struct person *
。例如,这两个声明是等效的
struct person *p1;
person_t *p2;
问题是使用标识符person_t
表示类型struct person *
的指针不是一个好的选择。代码的读者可以认为person_t
是结构人本身的别名。例如,声明指针的别名如person_ptr
或其他可能会看到此类型表示指针的情况会更好。