【问题标题】:what is the meaning of **ptr in c [duplicate]c中的**ptr是什么意思[重复]
【发布时间】:2015-06-19 21:07:00
【问题描述】:

我知道 *ptr 是一个叫做 ptr 的指针变量

**ptr 是否意味着它是指向指针的指针?

如果是这样,那么指向指针的指针是什么意思?

非常感谢任何指针(双关语)。

【问题讨论】:

  • 支持双关语;)
  • “我知道 *ptr 是一个名为 ptr 的指针变量” 不,它不是……
  • @LightnessRacesinOrbit:没错,如果你在字里行间读到:“我知道*ptr 是(声明)一个名为ptr 的指针变量”
  • @BenVoigt:这也不是声明。你需要剩下的类型。我承认,如果您假装断言中存在任意缺失的单词,那么,是的,您可以称其为“正确的”;因此,我发现在这方面注入“不”这个词通常会有所帮助;)
  • @LightnessRacesinOrbit:在我的问题中,它会是一个指向名为“know”的自定义类型的指针吗? :) 开个玩笑,请原谅我没有添加类型。

标签: c++ c pointers


【解决方案1】:

这取决于上下文。

在声明中,X **ptr 声明一个对象,该对象是指向 X 的指针的指针。

在声明之外,**ptr 取消引用两个指针,产生值。

请记住,指针只是一个保存另一个对象地址的对象。所以指向指针的指针就是这样:一个对象保存着另一个对象的地址,而这个对象恰好是一个指针。

【讨论】:

  • 感谢您的解释。我想我理解它(有点......)问题是,我在代码中看到了这一行: int main(int argv, char **args).. 我想知道 char **args 的实际含义,或者为什么使用它...
  • @UndefinedVariable 是的,严格来说,它声明了一个指向char的指针,但在main()的情况下,args是一个指向char的指针数组。所以,char *argv[]。这等价于char **args,因为在大多数情况下,数组名称会衰减为指向其第一个元素的指针,因此char *argv[]char **argv 在这里是等价的。把它想象成char *argv[],希望它会很清楚。
猜你喜欢
  • 2012-03-24
  • 2018-04-09
  • 2014-07-11
  • 2013-03-05
  • 1970-01-01
  • 2013-08-13
  • 2017-02-17
  • 2011-01-22
相关资源
最近更新 更多