 
 
 
 
 
   
        double **a;
        ....
        if ((a == (double *)(malloc(sizeof(double *) * m))) == NULL) {
            エラーの場合の処理
        }
のようにポインターへのポインターを宣言して、必要な領域を確保した後で、
行列の各行の先頭のアドレスを
        for (i = 0; i < m; i++)
            a[i] = abody + i * n;
とセットする。ここまでは大変だが、