【问题标题】:C++ pointer, outputC++ 指针,输出
【发布时间】:2020-02-03 13:20:33
【问题描述】:
#include<iostream>
#include<cmath>
using namespace std;
void main()
{
    float x[5] = { 1,2,3,4,5 };
    float *zeiger = x + 1;
    cout << zeiger << endl;
    cout << *(zeiger + 2) << endl;
    for (int i = 0; i < 3; i++)
    {
        zeiger += i;
        x[i] = pow(*zeiger, -1);
        cout << x[i] << endl;
    };
    system("PAUSE");
};

大家好。 有人能告诉我为什么程序最后会给出 0,2 吗? 我了解以前的输出: 地址 4 0,5 0,33

但是为什么是 0,2 呢?不应该是0,25吗? (对不起,如果我的英语不是你喜欢的。还在学习:))

【问题讨论】:

  • 我建议你在纸上画出数组和指针,用箭头作为指针。然后rubber duck debug程序,擦除并重绘纸上的箭头(指针)。
  • 知道对于 any 指针或数组p 和索引i,表达式p[i] 完全正确 也会有所帮助等于*(p + i)。这导致例如*zeiger 等于 zeiger[0]
  • 通知zeiger += i;,而不是zeiger += 1;
  • zeiger += i; 通过这样做,您可以读取/修改数组 x 之外的内存。也许使用zeiger ++

标签: c++ visual-c++ output


【解决方案1】:

没关系。现在我知道了。没有意识到使用 += i 时 zeiger 会被覆盖。谢谢各位:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多