簡體   English   中英

C++ 指針和 for 循環

[英]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的內容,例如如下所示:

重載 vector<T> 的輸出流運算符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM