in C ++ Ich möchte eine Doppelmatrix (zweidimensionales Doppelarray) initialisieren, wie ich es normalerweise ohne Zeiger tun würde:
%Vor% Da ich jedoch zurückgeben und es an Funktionen übergeben möchte, brauche ich es als double**
-Zeiger. Also, im Grunde muss ich Daten auf eine nette Weise initialisieren (wie oben), aber danach muss ich den Zeiger auf das 2D-Array speichern, ohne die Daten zu verlieren, wenn die Funktion beendet wird.
Irgendwelche Hilfe dazu? : -)
Sind all deine Matrizen 4x4? Dann würde ich einfach eine Klasse mit einem double[4][4]
-Member definieren und Objekte dieser Klasse übergeben:
Wenn Sie Matrizen verschiedener Dimensionen benötigen, die aber zur Kompilierungszeit bekannt sind, verwenden Sie eine Vorlage:
%Vor%Dadurch ersparen Sie sich den Verfall von Arrays und Pointern und machen den Code IMHO besser lesbar.
Erstens ist die Deklaration des zweidimensionalen Arrays nicht korrekt. Es muss wie folgt gemacht werden:
%Vor%Zweitens, um es in einer Funktion zu übergeben, können Sie es wie
machen %Vor%In der Funktionsdeklaration müssen Sie das Argument als ein Array angeben, das alle Dimensionen mit Ausnahme der ersten angibt. So würde die Deklaration wie folgt aussehen:
%Vor%Dies übergibt das Array als Referenz, ohne dass Sie einen Zeiger verwenden müssen.
Ich hoffe, das hat geholfen.
double (*)[4]
unterscheidet sich sehr von double **
Skizzieren Sie einfach das Layout Ihrer Doppel im Speicher für beide und Sie sollten verstehen, warum Sie sie nicht synonym verwenden können.
Initialisiere die temporäre Variable auf diese Weise und kopiere sie dann in den dynamisch zugewiesenen Speicher.
Wie wäre es damit (mit Zeigern, und tut, was Sie gefragt haben)
%Vor%Tags und Links c++ initialization pointers multidimensional-array