C Matrix an Funktion übergeben

Crazy Driver

Ensign
Registriert
Jan. 2011
Beiträge
182
Gibt es die möglichkeit, einen 2D-Array an eine Funktion zu übergeben?
Ich habe schon folgendes ausprobiert:
PHP:
void Funktion(int **Matrix)
{
    Matrix[4][7] = 5;
}

int main()
{
    int M[100][100];
    Funktion(M);
    return 0;
}
Und das hier:
PHP:
void Funktion(int Matrix[100][100])
{
    Matrix[4][7] = 5;
}

int main()
{
    int M[100][100];
    Funktion(M);
    return 0;
}
Beim ersten Beispiel erhalten ich den Fehler:

Das Argument vom Typ ""char (*)[100]"" ist mit dem Parameter vom Typ ""char **"" inkompatibel.

Beim zweiten Beispiel ist meine "Matrix" keine Matrix, sondern ein 1D-Array vom Typ char [100]*!

Was muss ich also tun, damit ich eine Matrix an eine Funktion übergeben kann? :confused_alt:
 
Beim Ersten musst du schon einen Zeiger übergeben. Also Funktion( &M );
 
normalerweise übergibt man in solchen fällen einen wert vom typ int *, sowie die größe der matrix.
 
Deine 2. Variante läßt sich zumindest im Visual Studio 2010 wunderbar kompilieren. Ich verstehe auch nicht, was du hiermit meinst:

Crazy Driver schrieb:
Beim zweiten Beispiel ist meine "Matrix" keine Matrix, sondern ein 1D-Array vom Typ char [100]*!

Erklär mal bitte.
Ergänzung ()

P.S.: Im Zweifelsfall könntest du einfach folgendes tun.

Code:
typedef struct
{
	int repr[100][100];
} Matrix;

void Funktion( Matrix* m )
{
	m->repr[4][7] = 5;
}


int main()
{
	Matrix M;
    Funktion( &M);
    return 0;
}
 
@Yuuri:
Quatsch... nach deiner Logik würde das hier ja nicht gehen...
Code:
void Funktion(int *Matrix)
{
    Matrix[4] = 5;
}

int main(void)
{
    int M[100];
    Funktion(M);
    return 0;
<== geht aber...
Weil ein Array ist ein Zeiger...


Wieso nicht einfach
Code:
    Funktion((int**)M);
 
Zurück
Oben