我有一个基于变量创建的矩阵。我似乎无法为我创建的函数传递此矩阵。
通过OpenMPI收到Num和rank。
我得到的错误类似于'期待'int **'但参数类型为'int(*)[(sizetype)(num)]''
这就是我所拥有的:
int gHolder(int** spanningTree, int size, int id, int token){
if( size == 0 ) return -1;
if( id < 0 || id >= size || token < 0 || token >= 0) return -1;
if(token == id) return id;
int j;
int holder;
for(j = 0; j<size; j++){
if(spanningTree[id][j] == 1){
holder = gHolder(spanningTree, size, j, token);
if(holder != -1) return j;
}
}
return -1;
}
int main(int argc, char * argv[]) {
int rank;
int num;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &num);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
int mat[num][num];
int tokenHolder = 7;
mat[0][1] = 1;
mat[0][2] = 1;
mat[1][0] = 1;
mat[2][0] = 1;
mat[2][3] = 1;
mat[2][4] = 1;
mat[3][2] = 1;
mat[4][2] = 1;
mat[4][5] = 1;
mat[4][6] = 1;
mat[5][4] = 1;
mat[6][4] = 1;
mat[6][7] = 1;
mat[6][8] = 1;
mat[7][6] = 1;
mat[8][6] = 1;
holder = gHolder(mat, num, rank, tokenHolder);
答案 0 :(得分:0)
您未正确宣布spanningTree
。您需要更改参数顺序,然后可以将其声明为:
int gHolder(int size, int spanningTree[size][size], int id, int token)
或:
int gHolder(int size, int (*spanningTree)[size], int id, int token)
size
声明需要在引用之前。