[英]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.