2016-05-29 33 views
-2

私はC++のポインタについて学んでいますが、私のコードではほかに何が欠けているのか分かりません。私は単純に2次元配列の要素の合計を取得しようとしています。ここでポインタ付き2次元配列

は私のコードです:

#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; 
} 

任意のヘルプ?ありがとう。

+0

を使用して2次元配列を渡すことができます2次元配列を 'int *'に変換することができないので、 'main()'の "totalRow(arr、r、c)"行のエラーです。 'int []'は 'int *'に変換できますが、 'int [] []'は変換できません。 –

答えて

0
int arr[r][c]; 

ARRのタイプはint[r][c]で、それはint* に変換することはできませんあなたはどれ自尊心のC++コンパイラは最初に与えてくれたはずですテンプレート

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