使用结构在函数之间传递数组信息

时间:2014-09-23 10:12:02

标签: c pointers compiler-warnings

我用指针挣扎了一下。我试图在函数之间传递信息,但是我收到了以下错误:"请求成员'得分'的东西不是结构或联合",和'索引&的相同错误#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;
}

基本上,我需要传递有关函数之间最佳匹配的信息,同时保持其有序(我的函数是尝试对信息进行排序并仅保留一定量的数据)。我想知道如何解决这个错误? 如果我遗漏了一些信息,请告诉我。

1 个答案:

答案 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);