从函数返回矩阵

时间:2016-12-04 03:50:43

标签: c function pointers matrix

如何从函数返回矩阵?我正在制作一个不断向函数发送矩阵的程序,并且还需要不断地从函数返回矩阵,我知道如何将矩阵发送到函数(使用双指针),但每次我尝试要求一个函数,它说它是一个不兼容的类型。 这是我使用的函数的一个例子:

float *filtrar(float val, int col, float **M)
{
    int i=0,j,k=0;
    float temp[4][6],linea[6];
    if (existe(val, col, M)>0)
    {
        for (i=0; i<tam; i++)
        {
            if (linea[col]==val)
            {
                for (j= 0; j <6; j++)
                    temp[k][j]=M[i][j];
                    k++;
                }
            }
        }
    }
    else
    {
        for (i=0; i<tam; i++)
        {
            if (linea[col]==inferior(val,col,M)||linea[col]==superior(val,col,M))
            {
                for (j= 0; j < 6; j++)
                {
                    temp[k][j]=M[i][j];
                    k++;
                }
            }
        }
    }
}

以下是调用该功能的部分:

float **m=filtrar(v1,t1,agua_vapor);

最后一部分是我需要你帮助的部分,因为我不知道如何将从函数中获得的矩阵赋予te变量m,我不知道它是否应该如同pointe,双指针,共同矩阵等。

如果有人能告诉我该怎么做,我会很感激。

这是我如何声明一个矩阵可以使用的例子,非常类似于前一个函数显示的那个,以防有人想知道,我是怎么做到的:

float *carga_archivo(char nombre_de_archivo)
{
    float M[200][6];
    float *p[6], **q;
    int i=0;
    FILE *archivo;
    archivo=fopen(nombre_de_archivo,"r");
    while(!feof(archivo))
    {
        fscanf(archivo,"%f\t%f\t%f\t%f\t%f\t%f\n",&M[0][i],&M[1][i],&M[2][i],&M[3][i],&M[4][i],&M[5][i],&M[6][i]);
        i++;
    }
    tam=i;
    for(i=0;i<6;i++)
        p[i]=M[i];
    q=p;
    fclose (archivo);
    return M;
}

欢迎任何书面修改或提出问题的方式。

1 个答案:

答案 0 :(得分:0)

如果你想返回一个矩阵,你需要将函数声明为矩阵类型,我的意思是:

float** filtrar(float val, int col, float **M)
{
  /* stuff that filtrar do */
  return M
}