簡體   English   中英

C ++-將數據傳遞到結構

[英]C++ - passing data to struct

我正在將Fortran 77代碼轉換為C ++,並且Fortran 77使用通用塊。 我試圖用結構替換公共塊,然后用函數中的值填充它們,然后在我的main中調用這兩個塊。 目前,我的代碼如下所示:

#include <iostream> 
#include <cmath>
using namespace std;

// data_list 
struct data_list {
    double g, dw, Vel, M, dt, N;
    int Ioutp1, Ioutp2; 
    } values;

void data (data_list& val) {
    val.g = 9.80665;
    val.dw = 0.05; 
    val.Vel = 20.0;
    val.M = 128; 
    val.dt = 0.05; 
    val.N = 4000;
    val.Ioutp1 = 1;
    val.Ioutp2 = 1;
    }   

void Pierson_Moskowitz(data_list& val) {

/*
* Calculation of properties of Pierson_Moskowitz Spectrum
*/
    double Ug, Hs, A, B, Std;
    cout << values.Vel << "\t\t" << values.g; 
    Ug = values.Vel/values.g;
    cout << Ug << endl;

}   
int main() {
  data(values);
  //float dw = values.dw = 0.05;
  cout << values.dw << endl; 

}

這只是一個測試,因為目前我的主要工作除了打印值之外沒有做任何事情。 我想要的是在我的data函數中賦予值的變量能夠在整個代碼中使用。 目前,我對兩件事感到困惑:

1)我的Pierson-Moskowitz函數沒有為Ug打印任何內容。 我不明白為什么不呢? 2)我不確定我是否需要data功能。 本質上,我要翻譯的Fortran代碼使用子例程為公用塊中的變量分配值。 我試圖通過使用一個結構,然后使用一個函數來填充值來做類似的事情。

這段代碼很短,我打算將所有內容保存在一個文件中。 任何幫助都非常感謝!

您要傳遞對公共塊的引用:

void data (data_list& val) {

那么你的改變將是公共塊,而不是一個副本。

暫無
暫無

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

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