2016-05-29 14 views
-2

Ich lerne über Zeiger in C++ und ich bin mir nicht sicher, was ich sonst in meinem Code vermisse. Ich versuche einfach, die Summe der Elemente in einem zweidimensionalen Array zu erhalten.2 Dimensional Array mit Zeigern

Hier ist mein Code:

#include <iostream> 

//function prototype 

int totalRow(int *arr, int row, int col); 

int main(){ 


    int r, c; 
    std::cout<<"How many rows in array?: "; 
    std::cin>>r; 

    std::cout<<"How many columns in array?: "; 
    std::cin>>c; 

    std::cout<<std::endl; 

    int arr[r][c]; 

    for(int i=0; i<r; i++) 
    { 

     for(int e=0; e<c; e++) 
     { 

      std::cout<<"Enter arr[ "<<i+1<<"] [ "<<e+1<<" ]"<<std::endl; 
      std::cin>>arr[i][e]; 
     } 

    } 

    std::cout<<totalRow(arr,r,c)<<std::endl; 

    return 0; 
} 

int totalRow(int *arr, int row, int col) 
{ 
    int sum=0; 

    for(int i=0; i<row; i++) 
    { 

     for(int e=0; e<col; e++) 
     { 

      sum+=*arr[i][e]; // I get an error here saying: subscripted value is 

          // not an array, pointer, or vector 

     } 

    } 

    return sum; 
} 

Jede Hilfe? Vielen Dank.

+0

Ein anständiger C++ Compiler zuerst gegeben haben, sollten Sie eine Fehler für die Zeile "totalRow (arr, r, c)" in 'main()', da ein zweidimensionales Array nicht in ein 'int *' konvertiert werden kann. 'int []' kann in ein 'int *' konvertiert werden, aber 'int [] []' kann nicht. –

Antwort

0
int arr[r][c]; 

Die Art der arr int[r][c] ist, ist es nicht zu int* umgewandelt werden können Sie das Array 2D passieren kann Vorlage

template <size_t R, size_t C> 
int totalRow(int(&arr)[R][C]);