【发布时间】: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