我有这个标题:
$overviewArray = json_decode(json_encode($result), true);
主要声明:
#define SIZE 4
typedef float matrix[SIZE][SIZE];
typedef struct {
char *name;
matrix *mat;
} matRec;
void printMat(matrix *);
void read_mat(matrix , float []);
这也是我主要的一部分:
matrix m[6];
matRec mats[6] = {
{"MAT_A", &m[0]},
{"MAT_B", &m[1]},
{"MAT_C", &m[2]},
{"MAT_D", &m[3]},
{"MAT_E", &m[4]},
{"MAT_F", &m[5]}
};
struct {
char *name;
void (*func)();
} cmd[] = {
{"read_mat", read_mat},
{"not_valid", NULL}
};
我在主要的printMat函数:
(*(cmd[func].func))(&mats[matrixx].mat, num);
printMat(mats[matrixx].mat);
和read_mat函数(在另一个文件中):
void printMat(matrix *matrx) {
int i,j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
printf("%7f ", matrx[i][j]);
}
printf("\n");
}
printf("\n");
}
我的目的是从数组发送我的矩阵的地址:mats,浮点数组,插入它们,并用另一个函数打印矩阵。我发送地址有困难。 read_mat函数确实“工作”,但是使用矩阵的副本(在函数的范围内),然后显然打印只有零的矩阵。我不明白如何使用函数声明中的指针编写正确类型的参数。 *的任何其他组合都会出错。致谢
答案 0 :(得分:1)
我想很少有类型信息可以帮到你。在这里说这个
matrix m[6];
你基本上是宣布
float m[6][SIZE][SIZE];
然后m[0]
的类型只是float [SIZE][SIZE]
或matrix
。
所以,当我将它的地址传递给函数时,它将是
somefun(&m[0]);
你会像这样声明并使用它
..somefun(matrix *t){
for(int i = 0; i< SIZE; i++)
for(int j =0 ; j< SIZE; j++)
printf("%lf",(*t)[i][j]);
..
}