【问题标题】:What is the difference between int* ptr and int *ptr in C? [duplicate]C 中的 int* ptr 和 int *ptr 有什么区别? [复制]
【发布时间】:2011-10-17 21:06:03
【问题描述】:

我是 C 的新手,我不知道以下两个变量声明之间的区别:

int* ptr;
int *ptr;

我认为在声明int* ptr;ptr 的值不能更改,而它可以更改为声明,int *ptr;

我不确定是不是这样。

这两个声明背后的概念是什么?

【问题讨论】:

标签: c pointers syntax variable-declaration


【解决方案1】:

对于编译器来说,这两个声明没有区别。

对于人类读者来说,前者可能意味着“int*”类型适用于同一语句中的所有声明。但是, * 仅绑定到以下标识符。

例如,以下两个语句都只声明了一个指针。

int* ptr, foo, bar;
int *ptr, foo, bar;

该语句声明了多个指针,从而防止使用“int*”间距。

int *ptr1, *ptr2, *ptr3;

【讨论】:

    【解决方案2】:

    C 中的空格大多是微不足道的。偶尔会出现空格很重要的情况,但这种情况很少见。您发布的两个示例是等效的。

    【讨论】:

      【解决方案3】:

      就像其他人说的那样。没有区别。如果您想了解更复杂的 C 类型声明,您会发现此链接很有用。 Reading C declarations.

      【讨论】:

        【解决方案4】:

        这称为空格运算符重载,请参见此处:http://www2.research.att.com/~bs/whitespace98.pdf

        【讨论】:

        • 我知道这是一年前发布的,但那个链接真的很棒!谢谢
        【解决方案5】:

        int *p;

        *p 
        


        对编译器没有意义,(int*) is a type named pointer

        【讨论】:

          猜你喜欢
          • 2022-01-15
          • 1970-01-01
          • 2020-08-03
          • 2013-01-16
          • 1970-01-01
          • 1970-01-01
          • 2021-02-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多