【问题标题】:Strange operator with pointers带指针的奇怪运算符
【发布时间】:2012-10-23 18:35:48
【问题描述】:

我正在阅读一些代码并遇到了这个问题。我现在没有完整的上下文保存这一行。

cout<<(*--*++ptr+1)<< endl;

当我们在其中输入值时,它编译得很好并且可以工作..

它的声明是这样的。

char ***ptr ;

这个运算符是什么,它是否包含在标准中?

【问题讨论】:

  • 答案就足够了。我想这些类型的技巧都可以,但应该在注释之前说明操作打算做什么,也许还有一个简短的解释。
  • 这是真实的生产代码吗?
  • 这是一些编程难题中的真实代码。我是初学者,我怎么能自己制作呢。
  • 请提供完整代码。 ptr 是如何初始化的?
  • 你应该不惜一切代价远离Three Star Programmers

标签: c++ pointers operators


【解决方案1】:

它不是一个单一的运算符,它是几个一元运算符的组合。解析如下:

*(--(*(++ptr))) + 1

因此,ptr1 首先递增,然后取消引用,然后该值递减并再次取消引用。

【讨论】:

  • 括号使它更容易理解。 [提示,如果你正在编写类似的代码]
  • 那么它是否等同于*ptr + 1?
  • @Ralph 不,您在增加时不会在 *s 的同一水平上减少。
  • @Ralph:不,它根本不等同于那个。相当于先执行++ptr; --(*ptr);,然后评估**ptr + 1
猜你喜欢
  • 1970-01-01
  • 2015-02-24
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
相关资源
最近更新 更多