- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Syntax-Frage -> writeString(char *string)

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2009
    Ort
    Bezirk Mödling
    Alter
    46
    Beiträge
    19

    Syntax-Frage -> writeString(char *string)

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Leute!
    Ich bin neu hier, und auch neu in der Roboter-Szene )
    Ich habe zu Weihnachten so einen RP6 bekommen.
    Der erste hatte einen defekten Drehzalgeber auf der rechten Seite. Nachdem ich das Teil bei Conrad umgetauscht habe scheint dieses Problem behoben zu sein.

    So nun zu meiner Frage:
    was bedeutet die Syntax des Arguments in "writeString(char *string)", bzw. das Sternsymbol irritiert mich. Was bedeutet das?
    und was bedeutet:
    void writeNStringP(const char *pstring)
    Hier stehen 3 Einträge als Argument.

    Kann mir das bitte wer erklären!?
    Danke im voraus!

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    14.12.2009
    Ort
    Steinfurt
    Beiträge
    46
    Durch den Stern-Operator wird nicht der Wert von string übergeben sondern dessen Adresse im Speicher. Call-by-reference ist das Stichwort. Arbeite dich mal durch ein C Pointer Tutorial. Ich denke, das wird dir besser helfen als kurze, auf diesen Fall bezogene Antworten hier im Forum.
    Und immer merken: "Wenn der Stern nicht funktioniert muss da ein Ampersand hin" (Zitat meines Profs)

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2009
    Alter
    31
    Beiträge
    188
    Gibt es für diese Operatoren eigentlich eine wirklich sinnvolle Anwendung (beim RP6) ?

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    14.12.2009
    Ort
    Steinfurt
    Beiträge
    46
    Ich möchte in verschiedenen Teilen meines M32 Programms die Werte der Lichtsensoren auslesen. Ich habe dazu eine Methode implementiert, der ich zwei Pointer auf Variablen für den linken und den rechten Lichtsensor mitgebe. Die Methode liest die Sensoren vom Baseboard aus und schreibt die Werte in den Speicher, der durch die Pointer vorgegeben wurde.
    Alternativ könnte ich die Werte in einem Array von der Methode zurückgeben lassen. Dann bräuchte ich aber nochmal zwei Variablen in denen ich die Werte speichern und zurückgeben kann. Oder ich definiere zwei globale Variablen die halt immer da sind und immer einen mehr oder weniger aktuellen Wert der Lichtsensoren enthalten. Irgendwie fand ich die Pointerlösung sauberer.

    Grüße,
    Jan

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2009
    Alter
    31
    Beiträge
    188
    Die "Alternativ"-Methode mit den Feldern bzw. mit den globalen Variablen kommt mir sehr bekannt vor .

    Ich habe zwar gewusst, dass es mit die Zeigermethode gibt, aber auf die Idee damit die Sensoren der Base auszulesen bin ich nicht gekommen.

    Das werde ich gleich mal ausprobieren.

    Danke für dein BSP

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2009
    Ort
    Bezirk Mödling
    Alter
    46
    Beiträge
    19

    Danke, noch ne Frage... ;-)

    Ich bin selber Softwareentwickler, aber in Java.
    C hab ich auch gelernt, 4 Semester lang, aber da ich es seitdem nie verwendet habe, habe ich leider alles wieder vergessen (

    Ich habe da noch ne Frage:
    Wie ist das zu verstehen, bzw. was ist hier bei folgendem Argument gemeint?
    void writeNStringP(const char *pstring)

    Muss hier das char-Argument eine definierte Konstante sein?

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.03.2006
    Ort
    Darmstadt
    Alter
    33
    Beiträge
    522
    Es wird ein Zeiger auch einen konstanten char erwartet. Man kann also davon ausgehen, dass pstring niemals schreibend dereferenziert wird.

    MfG Mark

    PS: const ist in C(++) ungefähr das, was in Java final ist.

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2009
    Alter
    31
    Beiträge
    188
    Es wird ein Zeiger auch einen konstanten char erwartet. Man kann also davon ausgehen, dass pstring niemals schreibend dereferenziert wird.

    MfG Mark
    Ich glaube fast, das unterhalb von suicide ist verständlicher ...

    Durch den Stern-Operator wird nicht der Wert von string übergeben sondern dessen Adresse im Speicher. Call-by-reference ist das Stichwort. Arbeite dich mal durch ein C Pointer Tutorial. Ich denke, das wird dir besser helfen als kurze, auf diesen Fall bezogene Antworten hier im Forum.
    Und immer merken: "Wenn der Stern nicht funktioniert muss da ein Ampersand hin" (Zitat meines Profs)

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2009
    Ort
    Bezirk Mödling
    Alter
    46
    Beiträge
    19
    @p_mork
    Danke, aber widerspricht sich das nicht!?
    Wieso die Referenz auf eine Konstante legen? Den Wert dieser Referenz darf man ja nicht ändern, was soll das für einen Sinn haben? Angemessen wäre es bei Konstanten immer den Wert (Call by Value) zu übergeben, oder?
    Ich hab diese Funktionssyntax übrigens in einem der Übungsbeispiele des RP6 gefunden.

    Gibts eigentlich eine Funktionsbibliothek um den Roboter in Java zu programmieren?

    @Xandi11
    Was meinst Du mit deinem vorigen Post bzgl. suicide...?
    Und was meinst Du mit
    "Wenn der Stern nicht funktioniert muss da ein Ampersand hin"?
    Was bewirkt ein Ampersand?

    Danke für eure Hilfe!

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2009
    Alter
    31
    Beiträge
    188
    Ich wollte einfach auf eine Post (von suicide) etwas weiter oben hinweisen

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen