我用指针挣扎了一下。我试图在函数之间传递信息,但是我收到了以下错误:"请求成员'得分'的东西不是结构或联合",和'索引&的相同错误#39;而不是得分(对于所有其他成员,我在这里没有列出这一点)。
这是我的结构:
typedef struct line_t {
char* buf;
int lineLength;
int wordCount;
int index;
double score;
} line_t;
这是我对main中函数的调用(带声明):
line_t bestmatch[TOP_SCORING_MAX];
func3(&line, &bestmatch[TOP_SCORING_MAX]);
这是我的功能:
line_t
func3(line_t line, line_t *bestmatchPtr[]) {
int i;
for (i=0; i< TOP_SCORING_MAX; i++) {
if (line.score != 0) {
if (i == 0) {
bestmatchPtr[0].score = line.score;
bestmatchPtr[0].index = line.index;
/*more code here: rest of func, closing of }, etc*/
return bestmatchPtr;
}
基本上,我需要传递有关函数之间最佳匹配的信息,同时保持其有序(我的函数是尝试对信息进行排序并仅保留一定量的数据)。我想知道如何解决这个错误? 如果我遗漏了一些信息,请告诉我。
答案 0 :(得分:3)
func3
签名应为:
line_t *func3(line_t line, line_t *bestmatchPtr)
/* Changed: second argument and return type */
另请注意:
bestmatch[TOP_SCORING_MAX - 1]
(不是bestmatch[TOP_SCORING_MAX]
)line
参数按值传递(&line
是指针)所以这是错误的:
func3(&line, &bestmatch[TOP_SCORING_MAX]);
函数调用应该是:
func3(line, bestmatch);