C++ 将2D数组传递给函数而不使用向量

C++ 将2D数组传递给函数而不使用向量,c++,multidimensional-array,C++,Multidimensional Array,我正在编写一个程序,以2D数组的形式打印用户输入的方阵元素的总和,而不使用矢量。但是,我有两个错误: 错误1:错误:数组的元素类型“int[]”不完整。 错误2: 错误:预期的表达式无法使用; 国际航空公司[n][n]; 对于(int i=0;iarr[i][j]; } } cout在函数参数(错误1)中,您需要至少指定数组的最后一个维度: int sumarr(int arr[][SIZE]){ /*...*/} 在对函数的调用中,您只需要使用数组名,无需取消引用(错误2): //既然s

我正在编写一个程序,以2D数组的形式打印用户输入的方阵元素的总和,而不使用矢量。但是,我有两个错误:

  • 错误1:
    错误:数组的元素类型“int[]”不完整。

  • 错误2:
    错误:预期的表达式无法使用;
    国际航空公司[n][n];
    对于(int i=0;i>arr[i][j];
    }
    }
    cout在函数参数(错误1)中,您需要至少指定数组的最后一个维度:

    int sumarr(int arr[][SIZE]){ /*...*/}
    
    在对函数的调用中,您只需要使用数组名,无需取消引用(错误2):

    //既然sizeof arr无法工作,您应该将大小作为参数传递
    内部苏马尔(内部**arr,内部n)
    {
    断言(n>0&&n<1000);//确认n是有效的,>0和合适的上限
    整数和=0;
    for(int i=0;i>arr[i][j];
    总和+=arr[i][j];
    }       
    }
    回报金额;
    }
    
    intmain()
    {
    int n;//方阵的行(或列)数
    标准:cin>>n;
    //二维阵列的内存分配
    整数**arr=新整数*[n];
    对于(int i=0;iint main()
    {
        int n;                            // No. of rows(or coloumns) of the square matrix
        cin >> n;
        int arr[n][n];
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)   // inputting array elements
            {
                cin >> arr[i][j];
            }
        }
        cout << sumarr(arr[][]);          // ERROR 2
        return 0;
    }
    
    int sumarr(int arr[][SIZE]){ /*...*/}
    
    cout << sumarr(arr);
    
    #include <iostream>
    #include <cassert>
    
    // since sizeof arr can't work you should pass the size as argument
    int sumarr(int **arr, int n) 
    {
        assert(n > 0 && n < 1000); // confirm that n is valid, > 0 and a suitable upper limit
        
        int sum = 0;
        for (int i = 0; i < n; i++) //calculating sum of elements
        {
            for (int j = 0; j < n; j++)
            {
                // input and sum in the same loop will save you a O(N^2) operation
                std::cin >> arr[i][j];
                sum += arr[i][j];
            }       
        }
        return sum;
    }
    
    int main()
    {
        int n; //No. of rows(or columns) of the square matrix
        std::cin >> n;
    
        // memory allocation for 2D array
        int **arr = new int *[n];
        for (int i = 0; i < n; i++)
        {
            arr[i] = new int[n];
        }
        //end
        
        int sum = sumarr(arr, n); // passing array and size
        std::cout << "Sum: " << sum;
         
        // freeing memory after use
        for (int i = 0; i < n; i++)
        {
            delete [] arr[i];
        }
        delete [] arr;
        //end
    }