好了,這裏是我的問題:如何用一個函數內的相同結構的值填充結構?
1)我已經定義了一個結構這樣說:
struct minos_model
{
int ifanis, ifdeck, npts, icb, cmb, noc;
double tref;
double r[MODEL_NPTS_MAX], rho[MODEL_NPTS_MAX], vpv[MODEL_NPTS_MAX], vsv[MODEL_NPTS_MAX],
qk[MODEL_NPTS_MAX], qmu[MODEL_NPTS_MAX], vph[MODEL_NPTS_MAX], vsh[MODEL_NPTS_MAX], eta[MODEL_NPTS_MAX];
char model_name[MODEL_LINE_LEN];
};
typedef struct minos_model model_t;
2)我已經宣佈這種形式的一些結構:
/* Declare structures */
model_t candidate_mod, current_mod, empty_mod;
3)然後我將它們傳遞給一個聲明如下的函數:
void
perturb_model(model_t *candidate_mod, model_t *current_mod, model_t *empty_mod)
{
candidate_mod = current_mod; // *THIS LINE*
<various other functions and whatnot>
}
4)然後我打電話這樣的功能:
perturb_model(&candidate_mod, ¤t_mod, &empty_mod);
// arguments passed as pointers
所以上面是我所做的簡化版本。我試圖(在線標記THIS線在步驟3)設置candidate_mod爲一個不同的結構(current_mod),我會使用一個循環,但一個,這似乎不雅,二,有時我設置它的結構也是current_mod)包含更少的值(比candidate_mod),因此我擔心原始結構(candidate_mod)的剩餘值將會保留。
我也應該提到,因爲也許它是相關的,該函數是定義在一個單獨的c文件鏈接在生成文件,所以也許共享全局有一個困難..但我認爲傳遞指針作爲參數應該解決這個?
此外,從我的研究看來,也許使用extern可能會有所幫助,但我無法弄清楚在多次嘗試之後如何使用。
如果有人能解釋做到這一點的最佳方法,我將非常感激!我知道如何在我的主代碼中輕鬆地做到這一點,但必須在函數中像這樣分配結構。
乾杯。
忽略大量細節並查看問題標題。只要將它們與'structB = structA'等同起來,只要你不只是等同於指針,在這種情況下它應該是'* structB = * structA' –