【发布时间】:2020-10-14 16:29:23
【问题描述】:
我刚开始使用 c++。我正在尝试运行正向欧拉,我在其中使用 for 循环和指针。但是我不明白怎么了?
#include <iostream>
using namespace std;
void euler(){
int n = 10;
double dt = 0.1;
double *a=new double[n];
double *v=new double[n];
double *t = new double[n];
int vr = 5;
for (int i=0;i<n; i++){
a[i+1] = vr + i;
v[i+1] = v[i] + a[i+1]*dt;
t[i+1] = t[i] + dt;
}
cout << v << endl;
}
int main(int argc, char const *argv[]) {
euler();
return 0;
}
终端给了我这个“0x7fce7cc017d0”
【问题讨论】:
-
你的代码调用了未定义的行为。
a、v和t的允许下标范围为 0..(n-1)。然而,您的循环在所有三个数组中索引 1...n。 -
并且它使用了
v[0]和t[0],它们当时是未初始化的。 -
这里
cout << v << endl;你正在打印数组v的地址 -
首选
std::vector,因为它可以动态扩展。数组是固定大小的。