簡體   English   中英

將具有未知行和列大小的二維數組傳遞給函數(C ++)

[英]Passing a 2d-Array with an unknown row and column size to a function (C++)

到目前為止,我已經獲得此功能:

void sumcol(int a[r][c],int r,int c){
int i,j,sum=0;
//int sizec= sizeof(a)/sizeof(a[0][0]);
//int sizer= sizeof(a)/sizeof(a[0]);

for (i=0;i<r;i++){
    for (j=0;j<c;j++) sum=sum+a[j][i];
    cout<<"Suma pe coloana "<<i<<" este : "<<sum<<endl;
    sum=0;
}
}

我在第一行得到一個錯誤,即未在此范圍內聲明r和c。 為什么? 盡管我在這里讀到了: https : //www.eskimo.com/~scs/cclass/int/sx9a.html這是正確的聲明方式。

我認為您真正的問題是將2d數組傳遞給函數。 如果您知道編譯時的數組大小,我將建議如下:

template <int r, int c>
void sumcol(int (&a)[r][c]){
    int i,j,sum=0;
    //int sizec= sizeof(a)/sizeof(a[0][0]);
    //int sizer= sizeof(a)/sizeof(a[0]);

    for (i=0;i<r;i++){
        for (j=0;j<c;j++) sum=sum+a[j][i];
        std::cout<<"Suma pe coloana "<<i<<" este : "<<sum<< std::endl;
        sum=0;
    }
}

並像這樣調用它:

int main()
{

    int temp[3][5]; // You don't forget to initialize this in your real code
    sumcol(temp); 
}

或者,如果您正在使用動態分配的矩陣array(malloc)。 比使用類似:

void sumcol(int** a,int r,int c){
      do stuff

考慮先閱讀此線程, 將2D數組傳遞給C ++函數

我個人發現使用涼爽的C ++ Vectors而不是C數組更容易做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM