【问题标题】:Where does the Dereferencing operator "*" for C go? [duplicate]C 的解引用运算符“*”在哪里? [复制]
【发布时间】:2014-03-07 03:46:14
【问题描述】:

我见过,

int *pnum;
int * pnum;
int* pnum;

这些都是一样的吗?

【问题讨论】:

  • 这本身就是至少十几个其他问题的重复;)
  • @MartinJ。它没有出现,我在谷歌上找不到它。我认为我没有使用正确的搜索字词。
  • @johnny:正如接受的答案中所述,这是因为这与引用无关。搜索“指针声明”会给你一些答案。但我的评论的重点是,你不是唯一犯这个错误的人,这个问题有很多重复。

标签: c pointers


【解决方案1】:

是的,这三个都是一样的。其中,* 不是解引用运算符,它是 int * 类型的一部分,指向int

【讨论】:

  • 这就是为什么有些人可能想要使用 int* p_var 而不是 int *p_var 的原因吗?所以它显示与 int 相关联?如果它不是取消引用运算符,它叫什么?谢谢。
  • @johnny 1. 我想是这样,但是如果你想定义多个指针,那样式可能不太清楚,例如int* p1, *p2; 而不是int *p1, *p2;。 2.我不知道它的名字,如果它有一个。在 C 语言中,变量定义看起来就像使用同一个变量,例如,您通过 int *p; 定义一个指针并通过 *p = ... 使用它。
【解决方案2】:

是的,它们都是相同的。空格在 C 中并不重要。您选择哪三个完全取决于个人喜好。

【讨论】:

    【解决方案3】:

    当您声明一个变量时,就像您在示例中所做的那样,* 符号仅告诉编译器该变量是指向您选择的类型的指针。

    示例:

    int *p;

    我们有一个整数指针的声明。我们怎么没有初始化指针,它的值是一个随机内存地址。

    示例 2:

    int a = 4;
    int *p;
    p = &a;
    *p = 1;

    在这个例子中,可以看到一个变量的内存地址分配给了指针p。符号& 获取变量a 内存地址。在最后一行,我们访问与指针关联的内存地址。也就是说,变量a area。

    这是取消引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多