C 将结构矩阵传递给函数

C 将结构矩阵传递给函数,c,function,matrix,struct,malloc,C,Function,Matrix,Struct,Malloc,如何将矩阵传递给另一个文件中的函数以执行某些操作?我分配了包含如下结构的矩阵: typedef struct { int x; int y; int z; } myStruct; myStruct(*matrix)[COL] = malloc(ROW*sizeof*matrix); 矩阵是数组的数组,因此可以使用指向mystruct的指针,以及行数和列数,以便函数知道如何处理它: void myfunction(m

如何将矩阵传递给另一个文件中的函数以执行某些操作?我分配了包含如下结构的矩阵:

   typedef struct {
        int x;
        int y;
        int z;
    } myStruct;
    
    myStruct(*matrix)[COL] = malloc(ROW*sizeof*matrix);

矩阵是数组的数组,因此可以使用指向
mystruct
的指针,以及行数和列数,以便函数知道如何处理它:

void myfunction(mystruct**matrix,int行,int列){
//你的逻辑是这样的。。。
}
使用C99中的VLA

void myfunction(int rows, int cols, myStruct matrix[rows][cols]) {
  ...
}

要传递指针,只需传递它:
func(矩阵)
。声明的方式与您的帖子中所示的方式相同。你没试过吗?@TomKarzes我试过了,但我的函数应该在另一个文件中。不在包含main的文件中。所以,给了我这个错误:函数“myFunction”的隐式声明。可能是因为它看不到结构(?)。与任何函数一样,在调用它之前需要声明它。问题与您传递的特定参数类型无关。你知道如何声明函数吗?从,而不是形式。也许除了C99之外,VLA还可以从C11和beyond@ryyker,是的,它在C11中是可选的。这是可悲的,因为它大大简化了对多维阵列的处理。大多数编译器仍然支持VLA,并且有一个宏来检查VLA是否受支持。我试过了,但我的函数应该在另一个文件中。不在包含main的文件中。所以,给了我这个错误:函数“myFunction”的隐式声明。也许是因为它看不到结构(?)@joy,这与结构无关。在函数正式定义之前调用它。请参阅,例如,了解详细信息。不,它是定义的,是定义给了我问题。