好了,这里是我的问题:如何用一个函数内的相同结构的值填充结构?
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' –