Typumwandlung



  • hallo,
    Ich brauche Hilfe von euch Leute.
    ich versuche einen Microcontroller IOWarrior 40 mit C++ zu programmieren.ich nuzte eine vorgeschriebene Funktion zum Lesen von Daten an den Pins.Diese Funktion liefert mir einen Rückgabewert vom Typ 'double' und diesen Wert möchte ich zur weiter Verarbeitung meines Programms, im Typ 'double*' umwandeln.Ich bekomme aber eine Fehlermeldung. Ich wollte wissen ob es unmöglich ist ein 'double' in ein 'double*' zu konvertieren.wenn es möglich ist, wie geht das?
    MYR



  • MYR schrieb:

    Ich bekomme aber eine Fehlermeldung.

    Super. Ich bekomm auch ne Fehlermeldung wenn ich was mache. Merkst was? Ohne die Fehlermeldung kann dir keiner helfen. Und ohne den Code der die Fehlermeldung erzeugt auch nicht.

    Ich wollte wissen ob es unmöglich ist ein 'double' in ein 'double*' zu konvertieren. wenn es möglich ist, wie geht das?

    Es ist möglich. Ich nehme mal an du wollst einen Zeiger auf den double haben, den du schon hast und nicht den Wert des double als Zeiger interpretieren. Letzteres wäre eine "echte" (vor allem echt unsinnige) Typumwandlung, ersteres schaffst du mit dem Adressoperator. Das sollte allerdings im Anfängerbuch/-tutorial deiner Wahl im Kapitel über Pointer drinstehen.



  • Bist du sicher, dass du eine solche Umwandlung haben sollst? Sprich sind die zurückgegebenen Werte wirklich Zeiger auf double?

    Oder wofür brauchst du den Zeiger? - Kannst du nicht einfach einlesen und dann auf den eingelesenen Wert verweisen?

    double f = read (); //lesen
    foo (&f); // und verweisen wohin auch immer
    


  • MYR schrieb:

    hallo,
    [...] Diese Funktion liefert mir einen Rückgabewert vom Typ 'double' und diesen Wert möchte ich zur weiter Verarbeitung meines Programms, im Typ 'double*' umwandeln.

    Was meinst Du mit Umwandeln? Was glaubst Du, was double* für ein Typ ist? Was soll der "Wert" des double* -Dings sein?

    MYR schrieb:

    Ich bekomme aber eine Fehlermeldung.

    Fein. Wahrscheinlich eine, die sagt, dass double nicht nach double* implizit konvertiertbar ist.

    MYR schrieb:

    Ich wollte wissen ob es unmöglich ist ein 'double' in ein 'double*' zu konvertieren.

    Es gibt zumindest keine implizite Konvertierung. Du musst schon genau sagen, was Du willst. "double rein, double* raus" reicht nicht. Lies Dir am besten nochmal das Kapitel über Zeiger in Deinem Buch durch.

    Gruß,
    SP



  • Ach Leute, macht ihn doch nicht so fertig. 😃 Ist doch relativ klar, was er meint (wenn auch unsinnig ausgedrückt).

    Du bekommst einen double-Wert zurück und speicherst ihn (Variable). Deine andere Funktion verlangt einen Wert vom Typ double*, also einen Zeiger auf eine double-Variable. Nun musst du einfach die Adresse deiner double-Variable übergeben, und das machst du mit dem Adress-Operator '&'. Und wenn alles klappt und du glücklich bist, nutzt du diese glückliche Phase, um nochmal ganz genau ins Zeiger-Kapitel deines Lieblings-C++-Buches zu schauen. 😉



  • _matze schrieb:

    Ach Leute, macht ihn doch nicht so fertig. 😃 Ist doch relativ klar, was er meint (wenn auch unsinnig ausgedrückt).

    Ich finde nicht, dass es so klar ist, was er will. Ich weiss ja nicht, wie der Mikrokontroller arbeitet. Könnte schon sein, dass der da wild mit Pointern rumhantiert. Und dann wäre es ja etwas anderst und er bräuchte den cast.


Anmelden zum Antworten