我的问题是,如果您打印出结果*(ary + i),我知道这是另一种表示ary [i]值的方式,那么以下输出将是十六进制/垃圾数据,还是将特定索引指定为新值基于* ary + i计算得出的结果?整个指针的内容仍然让我失望。

  int ary[] = [7, 5, 3, 1, 2, 4, 6, 8];

  for (int i = 0; i < 8; i++)
        {
            *(ary + i) = *ary + i;
        }

最佳答案

ary衰减为您发布的表达式中的指针。并且由于它总是产生相同的地址(第一个元素),因此*ary将在每次迭代时求值为7

由于您了解*(ary + i)ary[i]等价,因此您现在应该知道循环体与此类似:

ary[i] = 7 + i;

关于c++ - 使用数组的指针算术,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47069266/

10-11 18:40