【问题标题】:how to declare a pointer in C syntax? [duplicate]如何在 C 语法中声明一个指针? [复制]
【发布时间】:2012-02-14 16:14:05
【问题描述】:

可能重复:
C++ Pointer in Function

在声明指针时,这些语句在 C 中是否相同?

 int *ptr;
 int * ptr;
 int* ptr;

【问题讨论】:

  • 作为已作为副本关闭的问题的副本而关闭?不错。
  • 跳过阅读基本的编程文本,转而去 Stack Overflow?认真的吗?

标签: c


【解决方案1】:

如链接问题中所述,它们都是相同的(只需确保始终使用一个 - 特别是在使用现有代码库时)。

仅有的两个区别是:

  • 第一种格式是 K&R 使用的。许多人在谈论 C 代码样式时默认使用 K&R。

  • int* p, x; 具有误导性,因为 x 是 int 而不是 int*,因此在使用第三种语法时要注意这个陷阱。

【讨论】:

    【解决方案2】:

    这三个声明是等价的。

    int *ptr;  // Kernighan & Ritchie style
    int* ptr;  // Stroustrup style
    

    【讨论】:

    • 投反对票的人,请解释你投反对票的原因。
    【解决方案3】:

    你试过了吗?是的,他们是。就我而言,我总是更喜欢第一种方式。但我不会在这里开始新的“格式化”战争;-(

    【讨论】:

    • 你刚刚做到了!!!怎么会有人去int *x?我一直不明白。您正在定义一个名为 x 的 int*,而不是一个名为 *x 的 int。 Qt IDE 实际上会自动更正到第一个版本...
    【解决方案4】:

    是的。这主要是一个偏好问题,尽管根据我的经验,大多数人更喜欢第一个或第三个。

    就个人而言,我更喜欢第一个,因为这样的情况:

    int *ptr1, *ptr1;
    

    int* ptr1, ptr2; /* ptr2 is NOT a pointer, needs another * before it to be one */
    

    编辑:

    需要明确的是,一个并不比另一个更正确,您应该选择对您最有意义的一个。最重要的是,在整个代码中始终使用一个可能是最重要的。

    【讨论】:

    • 不同的风格肯定会导致对所发生的事情以及作者的实际意图产生歧义和混淆!
    • -1:你所说的不是喜欢这种语法的理由。这是更喜欢单一声明的原因
    • 我不同意 :) 因为用int* ptr 从左到右阅读你说有一个指向整数的指针,叫做ptr,而int *ptr 你说有一个整数,不用等待,它是一个指向整数的指针……也就是说,我想强调指向 int 的指针是一种类型。而且我不鼓励在同一行中进行多重声明:)
    • 当然。无论哪种方式都有论据;)。我肯定不是暗示一个比另一个更正确。可能最重要的一点是建立一种风格并在整个代码中保持一致。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多