c语言 - 我收到一个错误,我是结构新手,不知道如何解决它



当我试图编译它时,我得到了这个错误:

在参数列表中声明的"structTMatrix"在此定义或声明之外将不可见

3|int InputMatrix(struct TMatrix Matrix(;

#include <stdio.h>
#define MAX 1000
int InputMatrix (struct TMatrix Matrix);
struct TMatrix{
int L, C;
};
int main() {
struct TMatrix Matrix;
InputMatrix(Matrix);
return 0;
}
int InputMatrix (struct TMatrix Matrix) {
}

函数声明中结构struct TMatrix的声明范围

int InputMatrix (struct TMatrix Matrix);

是参数列表。在它之外,这个声明是看不见的。

所以这个结构声明

struct TMatrix{
int L, C;
int N;
int LIN[MAX];
int COL[MAX];
float X[MAX];
};

声明文件范围中的另一个结构。

你需要像一样交换申报

struct TMatrix{
int L, C;
int N;
int LIN[MAX];
int COL[MAX];
float X[MAX];
};
int InputMatrix (struct TMatrix Matrix);

或者在函数声明之前放置结构的正向声明

struct TMatrix;
int InputMatrix (struct TMatrix Matrix);

请注意,如果你想更改main中声明的结构类型的对象,那么你需要通过指向它的指针将其传递给函数。否则,函数参数就没有意义了。这就是应该像一样声明的函数

void InputMatrix( struct TMatrix *Matrix );

你应该写

struct TMatrix Matrix;
InputMatrix( &Matrix );

最新更新