vektorzeiger an funktion übergeben

kurcob

Mitglied
Hallo,

weiß jemand wie man einen 2 Dimensionalen Vektor an eine funktion übergibt?
Code:
void funktion( ?){ // als Zeiger, das auf dem original gearbietet wird, call by reference
...
}
int vektor[3][3]={0};
funktion(?);
 
wobei das jetzt kein zeiger ist!?

wenn ich es als zeiger im funktionskopf deklariere kommt ein warning:

Anzahl der Dereferenzierungen bei 'int (*)[9]' und 'int' unterschiedlich
Unterschiedliche Typen für formalen und übergebenen Parameter 1
 
Hi,

ein Feld ist immer ein Zeiger !

Du könntest statt dessen auch
Code:
void funktion(int** vek)

schreiben.

Wenn du also noch einen Zeiger vor dein Feld setzt
müsstest du also so drauf zugreifen:
Code:
  ( *vek )[0][0] = 13;

Benny
 
aber ist es dann auch ein zeiger wenn ich
Code:
void funktion(int vek[][9]){
...
}
schreibe?

schreibt es mir dann in mein original?
 
Hallo,

Code:
int vek[][9]
ist das selbe wie
Code:
int* vek[9]
also ein Zeiger auf ein 9 Felder langes Integerarray.
Nein, das ist nicht dasselbe. Ersteres ist ein zweidimensionales Array von Ganzzahlen, letzteres ein Array von Zeigern auf Ganzzahlen.

Insbesondere ist auch int ary[3] nicht gleichzusetzen mit int *ary! Arrays und Zeiger sind zwei verschiedene Paar Schuhe, auch wenn sie sich oft ziemlich ähneln. Siehe dazu auch Kapitel 6 der FAQ von comp.lang.c.

Grüße,
Matthias
 
hm, stümmt sry :-(.
Ich besorg mir meine Felder immer mit new... da funktionierts

Wie Mathias schon sagt:
Code:
void funktion(int vek[3][3]) {
    vek[0][0] = 42;
}
Intern wird dieses Feld mit Zeigern gehandelt.
Nach dem Aufruf der Funktion steht also an der
stelle [0][0] eine 42


Benny
 
Zurück