我在使用结构方面不是很坚定,目前正在尝试通过void函数传递结构。
该结构在分片头以及我的void函数中定义:

/* "main.h" */

struct input{
    unsigned int NO;
    double RA;
    double DE;
    double MV;
};

void full_view_equ(struct input, struct input);

函数看起来像这样,必须使用两种不同的结构。结构EQU已包含值,OUTPUT将未初始化:
/* "transformations.c" */

#include "main.h"

void full_view_equ(struct input EQU, struct input OUTPUT){
    OUTPUT.NO = EQU.NO;
    OUTPUT.RA = -radian2degree(EQU.RA);
    OUTPUT.DE = radian2degree(EQU.DE);
    OUTPUT.MV = EQU.MV;
}

我用两个结构EQU和OUTPUT调用函数,如下所示:
struct input EQU, OUTPUT;

full_view_equ(EQU, OUTPUT);

问题在于,在该函数中,OUTPUT具有期望值。在函数外部,OUTPUT的所有条目都为零。

在我使用数组而不是结构之前,一切正常之前,我看不出它到底出了什么问题。

最佳答案

您必须使用指向该结构的指针并将其传递给函数,在代码中,函数中的OUTPUT结构实际上是原始副本的副本,更改副本不会更改原始副本。
要声明指向结构的指针,只需使用以下代码:

struct input *OUTPUT;

并将此标头用于您的功能:
void full_view_equ(struct input EQU, struct *input OUTPUT)

该函数的调用将是:
full_view_equ(EQU, &OUTPUT);

10-07 20:27