【问题标题】:What is the difference node *node1 vs node* node1? [duplicate]node *node1 vs node* node1有什么区别? [复制]
【发布时间】:2017-05-18 18:08:48
【问题描述】:

我有 1 个节点:

struct node
    {
        int key;
        struct node *left, *right;
    };

有什么区别

node  *node1

node*  node1

?

【问题讨论】:

  • C 声明语法的工作方式,对象的“指针”被指定为 declarator 的一部分,而不是类型说明符。给定声明int *ppint 特性由类型说明符int 指定,而p 的指针特性由声明符 @987654329 指定@。该声明被解析int (*p);,这意味着像int* p, q;这样的声明将被解析为int (*p), q;

标签: c pointers syntax


【解决方案1】:

没有typedef,这两个声明都是非法的。

typedef 点赞

 typedef struct node node;

到位,没有区别。这两个语句都声明了一个变量node1,其类型为指向node 的指针。 (注意:您仍然需要终止 ;,不过)。

这是一个选择问题,但有些人(包括我)更喜欢将指针符号附加到变量上,以避免误解,以防多个变量声明,如

 node *p, q;

其中,p 是指针类型,但 q 不是。

这样写

 node* p, q;

可能造成pq都是指针类型的错觉,而实际上它们不是

【讨论】:

    猜你喜欢
    • 2017-04-18
    • 1970-01-01
    • 2019-04-24
    • 2017-09-28
    • 2019-09-03
    • 2014-08-28
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多