当我试图编译它时,我得到了这个错误:
在参数列表中声明的"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 );