我在使用结构方面不是很坚定,目前正在尝试通过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);