Fehler: Ungültiger Typ 'int[int]' for array subscript

Möchte ich weitergeben dynamisch Größe 2D-array als parameter an eine Funktion. Ich weiß, diese Frage wurde diskutiert, mehrfach in vielen Orten, aber auch nach der Anwendung aller Permutationen und Kombinationen von [] und *, ich habe nicht in der Lage, diese zu arbeiten.

#include<iostream>
#include<algorithm>
using namespace std;

int bestpath(int *A, int N, int x, int y)
{   if(x>= N || y>=N)
        return 0;
    if(x == y == N-1)
        return 0;
    int value= A[x][y]; //Error: Invalid type 'int[int]' for array subscript.
    value+= max(bestpath(A, x+1, y, N), bestpath(A, x, y+1, N));
    return value;
}

int main()
{   int T, N, i, j, k;
    cin>>T;
    for(i=0; i<T; i++)
    {   cin>>N;
        int A[N][N];
        for(j=0; j<N; j++)
        {   for(k=0; k<N; k++)
            {   cin>>A[j][k];
            }
        }

        int ans= bestpath(&A[N][N], N, 0, 0);
        cout<<ans<<endl;
    }
    return 0;
}

Tritt der Fehler in der Zeile angegeben.

Wenn ich eine änderung der definition einer Funktion zu-

int bestpath(int *A[], int N, int x, int y)

Kommt der Fehler in der aufrufenden Funktion: cannot convert int* int**.
Ich möchte mir meine Grundlagen, die klar von der Verwendung von *A, *A[], **A, und jede andere Art und Weise, in der wir passieren die matrix.
Und gibt es einen anderen, besseren Weg, dies zu tun?

  • A[N][N] ist ein int (Sie Zugriff auf das element). Die Adresse dieses ist ein int *.
  • int A[N][N]; verwendet variable length arrays sind eine GCC-Erweiterung.
  • Zusätzlich zu dem, was @sftrabbit gesagt, auch wenn Sie möglicherweise haben könnte, ein array, dessen Dimensionen angegeben werden, die zur Zeit ausführen, &A[N][N] (mit A erklärt int A[N][N]) ist Undefiniertes Verhalten.
InformationsquelleAutor Chocolava | 2012-12-02
Schreibe einen Kommentar