char ** im Fkt. - Kopf, warum gehts nicht?

Ryu1991

Erfahrenes Mitglied
Hi,
Ich habe jetzt 1-2 jahre C++ erfahrung.
Als ich ein 2D Array übergeben wollte hatte ich allerdings schwierigkeiten:

ein array, das so definiert war:
Code:
 char Feld[14][14]

ließ sich Folgender Funktion nicht übergeben:
Code:
void Auswerten(char**, int, int);

Es kam immer 'unable to convert Char (*) [14] to char**' das Problem habe ich gelöst, aber ich verstehe nicht, warum das nicht funktioniert, das müsste doch gehen:confused:
es heißt ja auch int main(char *argv[], int argc), und das ist ja das selbe wie char**
und ein Eindimensionales char array lässt sich ja auch per char* übergeben

achja, der versuch, das arra auf char** zu casten brachte zwar ein kompilat, aber eines das abstürzt
 
C++:
// einfach type durch gewünschten Datentyp und size durch größe der 2. dim. ersetzen ...
typedef type (*PtrArray)[size];

void foo(PtrArray ptr_array)
{
    std::cout << ptr_array[0][0] << std::endl;
}
so sollte das gehen ;)
 
Wie gesagt, das Problem war bereits gelöst, aber ich würde gerne wissen, warum das nicht geht, mit char** das is doch ein 2D-Array, im Prinzip, zumindest der Pointer darauf, da wird halt der Speicher nicht mit erzeugt, muss aber ja nicht.
 
hmmm...... OK,
und wie ist das dann bei den Parametern für die main? Das ist es doch auch nichts anderes, aber da geht es :-(
 
hmmm...... OK,
und wie ist das dann bei den Parametern für die main? Das ist es doch auch nichts anderes, aber da geht es :-(
Natürlich ist es da etwas anderes. Lies es dir nochmal durch. Es kommt drauf an wie das Array welches dort als Parameter an die Funktion übergeben wurde, definiert worden ist. Es ist defnitiv anders definiert als dein Array. Es ist nämlich wirklich ein Array von Zeigern auf char. Dein Array ist ein 2 dimensionales Array von char - das ist ein Unterschied.

Gruß
 
Das heißt, wenn ich eine Variable char *Feld[14] definiere, und dann durch ne for schleife jage, wo ich mir mit alloc den speicher hole kann ich es mit char** übergeben?
 
Ok, danke, erledigt :)

Ich wollte mich bei dir bedanken und den Beitrag kommentieren, aber es ging nicht, ich muss erst andere bewerten, aber da du mir quasi immer sofort hilfst, wird das schwer :D
 

Neue Beiträge

Zurück