2016-05-29 2 views
-2

Я узнаю о указателях в C++, и я не уверен, что еще мне не хватает в моем коде. Я просто пытаюсь получить сумму элементов в двумерном массиве.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

Любой уважающий C++ компилятор должен был первым дал вам ошибка для строки «totalRow (arr, r, c)» в 'main()', поскольку двумерный массив не может быть преобразован в 'int *'. 'int []' может быть преобразован в 'int *', но 'int [] []' не может. –

ответ

0
int arr[r][c]; 

Тип обр является int[r][c], он не может быть преобразован в int* Вы можете передать 2D массив с помощью шаблона

template <size_t R, size_t C> 
int totalRow(int(&arr)[R][C]); 
Смежные вопросы