动态数组作为函数参数

问题描述:

在我的程序的主要功能我已经创建动态阵列,以在变量指定的要素数(计算阵列被删除之后):动态数组作为函数参数

cin >> bok; 

double **macierz; 
macierz = new double *[bok]; 
for(int i = 0; i < bok; ++i){ 
    macierz[i] = new double[bok]; 
} 

阵列macierz(波兰矩阵)来计算它的决定因素与其他功能我已经写了:

#include <iostream> 
#include <conio.h> 
#include <string> 
#include <math.h> 

double determinant(double b[][bok],int m); 

// there is int main(){ ... } 

double determinant(double b[][bok],int m){ 

int i, j; 
double sum = 0, 

double **c;     //Second array that throws "type 'double' unexpected" 
c = new double *[m]; 
for(int i = 0; i < m; ++i){ 
    c[i] = new double[m]; 
} 

if(m==2){ 
    sum = b[0][0]*b[1][1] - b[0][1]*b[1][0]; 
    return sum; 
} 

for(int p=0; p<m; p++){ 
    int h = 0,k = 0; 
    for(i=1; i<m; i++){ 
     for(j=0;j<m;j++){ 
      if(j==p) 
       continue; 
      c[h][k] = b[i][j]; 
      k++; 
     if(k == m-1){ 
      h++; 
      k = 0; 
     } 

     } 
    } 

sum = sum + b[0][p]*(pow((float)-1,p))*determinant(c,m-1); 
} 

for(int i = 0; i < m; ++i){   //Removing second array 
    delete[] c[i]; 
} 
delete[] c; 
return sum; 
} 

这里是主要功能的地方,上面一个是用来计算行列式:

double det; 
    det = determinant(macierz, bok);  //bok was entered by user 

的问题是,该阵列macierz创建为动态的,以允许用户输入数字,这将是阵列中的行的数量/列(它是正方形矩阵,所以行数等于列数) 。它完美地工作,直到我创建了需要这个动态数组作为参数之一的函数。

怎样的决定函数的声明应该进行修改,以能够使用macierz阵列,因为它是第一个参数?还有一个小东西 - 也是数组c in determinant函数抛出错误(它是下一个动态数组,但我不明白,为什么它不起作用 - 我已经创建并删除它像macierz编译器正在抛出“类型”双“意外”)

+3

需要动态数组的使用:'std :: vector obj;'需要一个二维数组使用'std :: vector > obj;' – 2013-04-30 19:35:06

+0

@AlokSave:请告诉我如何通过向量的矢量到我的GPU,或启动一个DMA事务将其传输到我的NIC ... – 2013-04-30 19:53:49

+0

@AlokSave:但是有可能不使用向量,就像_macierz_数组被创建?如果是这样,它怎么可以作为一个论据? – Konpon96 2013-04-30 20:01:02

看看shengy的答案this question为各种方式将二维数组传递给函数。