[英]C++ pointers and for loops
我剛開始使用c++。 我正在嘗試運行前向 Euler,在那里我使用 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”
您正在打印指針本身,而不是它指向的值。 嘗試以下方法之一:
cout << *v << endl;
或者
for (int i=0;i<n; i++)
cout << v[i] << endl;
此外,如評論中所述,數組索引中不需要+1
。 順便說一句,這不是C++ 中指針的一個很好的用法。 通常,除非確實需要,否則您不想使用指針。 使用像您這樣簡單的代碼,您可以簡單地聲明數組。
double *v=new double[n];
...
cout << v << endl;
V 是一個指向 n 個雙精度數組的指針。
當您打印時,您正在打印指針的值。
這就是為什么你會得到像“0x7fce7cc017d0”這樣的結果,因為這是指針的值。
如果你想打印出數組的值,你必須正確地索引到它。
std::cout << v[0] << "\\n"
如果您為vecotor
實現operator <<
,則可以使原始代碼打印 vector v
的內容,例如如下所示:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.