Problem mit Zeiger
-
Hallo liebe Community
Ich hab ein Problem bei der Übregabe eines Zeigers in eine Funktion
Ich erstelle mir nen Zeiger auf mein Array und übergebe das an eine Funktion:
double* x = new double[G.vertexnum] m_Matrix->solve( x, bx );Die Funktion startet dann wie folgt:
void LUdecomp::solve( double x[], const double b[] ) const { double* y = x; for ( int i = 0; i < n; i++ ) y[i] = b[i]; ....Allerdings bricht er schon im ersten Schleifendurchlauf ab. Was muss ich ändern? Ich dachte eigentlich, dass der Speicherbereich für x reserviert ist und y zeigt doch eigentlich auch dorthin oder?
Grüße
Neron
-
Und wo hast du die Variable "n" definiert?
Und muss man y[i] = b[i]; nicht in {} Klammern setzen?
-
Für deine Schleife kannst du memcpy() benutzen.
double* y = x; memcpy(y, b, sizeof(double) * n);Ansonsten, was ist n ?
-
Sorry, ich hab die anderen Variablen nicht weiter erklärt, da ich weiß, dass der Fehler bei x bzw. y liegt. n ist die Ordnung der Matrix, die ich zerlege und stimmt mit der Ordnung der Vektoren x,y, und b überein.
-
Tobi3000 schrieb:
Und muss man y[i] = b[i]; nicht in {} Klammern setzen?
Nein, muss man nicht, so lange nur eine Anweisung in der for-Schleife ausgeführt. Erst ab mehreren Anweisung ist ein Block notwendig.
@DEvent: Deine Methode funktioniert leider nicht, schmiert mir auch hier wieder ab.
Muss ich den Speicherplatz für y neu anlegen? Ist ja eigentlich nur n Zeiger, der auf nen bereits definierten Speicherplatz zeigt... Hm, ich versteh's nicht

-
DEvent schrieb:
Für deine Schleife kannst du memcpy() benutzen.
double* y = x; memcpy(y, b, sizeof(double) * n);Ansonsten, was ist n ?
)
