float to void*
-
BigNeal schrieb:
verstehe ich hier etwas falsch, oder warum nicht einfach so?
Wir sind ja nach wie vor am spekulieren. Mein Vorschlag war übrigens der selbe...

-
man sollte nicht TV schauen neben dem Tippen

Ich denke eigentlich eher, dass ein Zeiger (also float*) erwartet wird. Man kann doch von vernünftigen Menschen nicht erwarten, dass sie eine Fliesskommazahl gewaltsam in einen void-Zeiger deformieren...
genau dem schliesse ich mich an. Wenn ich void* sehe, gehe ich primär mal davon aus, dass ein Zeiger auf ein Objekt/Variable erwartet wird.
-
Auch wenns es nicht mehr so ganz passt, würde ich gern noch eine Frage nachschieben:
Eine Funktion erwartet einen **int, in die die Ausgabe geschrieben wird.
Wie bekomme ich sowas in ein int array?Edit: Also der **int soll ein Rückgabeparameter sein, falls das jetzt ungenau formuliert war.
-
Ich hoffe mal, die Funktion will wirklich einen float* als void* haben.
Aber bei dieser Bibliothek sollte man alle andere nicht ausschliessen
Danke auf jeden Fall.
-
Sinthoras schrieb:
Edit: Also der **int soll ein Rückgabeparameter sein, falls das jetzt ungenau formuliert war.
Danke, aber dieser Satz ist die Ungenauigkeit höchstselbst. Entscheide dich für Rückgabewert oder Parameter. Meinst du etwa Output-Parameter?
Und
**intgibts nicht, wenn schonint**.
-
Nexus schrieb:
Sinthoras schrieb:
Edit: Also der **int soll ein Rückgabeparameter sein, falls das jetzt ungenau formuliert war.
Danke, aber dieser Satz ist die Ungenauigkeit höchstselbst. Entscheide dich für Rückgabewert oder Parameter.
Und
**intgibts nicht, wenn schonint**.Ja, klar. int** meine ich, sorry

Ich übergebe der Funktion einen Parameter, in den sie das Ergebnis schreibt.
-
Theoretisch macht man das so:
int **array = new int*[2]; array[0] = new int[5]; array[1] = new int[7]; mysterioese_funktion(array);Ich denke mal nicht, dass die Funktion ein direktes 2-dimensionales Array erwartet, dann wäre der Typ z.B.
int(*)[10].
-
Also doch Output-Parameter.

Sorry, das hat mich zuerst tatsächlich verwirrt. Doch jetzt, wo die formale Verwirrung geklärt ist, können wir uns voll und ganz der inhaltlichen zuwenden.

Sinthoras schrieb:
Eine Funktion erwartet einen [int**], in die die Ausgabe geschrieben wird.
Wie bekomme ich sowas in ein int array?Hast du ausserhalb der Funktion ein
int[size]-Array und willst das in einenint**rumwürgen? Das geht nicht vernünftig. Oder hast du einint[width][height]-Array?Sag am besten, was (semantisch, nicht nur Typ) der
int**-Parameter repräsentiert und was du als Aufrufer damit anfangen willst.
-
ipsec schrieb:
Theoretisch macht man das so:
int **array = new int*[2]; array[0] = new int[5]; array[1] = new int[7]; mysterioese_funktion(array);Wenn, dann aber ohne Initialisierung vor dem Aufruf, es handelt sich ja um einen reinen Output-Parameter.
Andererseits kann man dann wegen der Kopie des
int**nur einenint*innerhalb der Funktion verändern, was einemint*&-Parameter gleichkommen würde. Aber es geht doch um Arrays. Einint[size]-Array kanns wegen der zweifachen Indirektion jedoch nicht sein, zumindest nicht ohne Würgen.Fragen über Fragen...

-
Nexus schrieb:
Wenn, dann aber ohne Initialisierung vor dem Aufruf, es handelt sich ja um einen reinen Output-Parameter.
Naja ich dachte an sowas:
void mysterioese_funktion(int **out) { out[0][3] = 42; out[1][5] = 10^10^10^32; }Aber natürlich kann ich mich auch irren.
-
Nein, das macht Sinn. Ich dachte eben, das Array selbst würde von der Funktion erzeugt, dabei sind es nur die Elemente.

-
Die Funktion gibt mir die Anzahl der vorhandenen Module in einem Gerät und zu jedem Modul die Anzahl der Kanäle.
Es gibt keine festen Vorgaben an die Struktur, wie ich das abspeichern muss. Hauptsache, ich speicher es irgendwie. D.h. ich kann mich mit dem Aufbau des Arrays nach Belieben der Funktion anpassen.