- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 5 von 5

Thema: Das Funktionen-Byref/Byval-Variablenchaos - Verständnisfragen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo Thomas,
    dein Wissensstand ist vollkommen in Ordnung.
    Eine Sache hierzu: Es funktionierte zwar, war aber manchmal zu langsam und zu unübersichtlich.
    Durch die Verwendung von Subs oder Funktionen wird es nicht schneller, im Gegenteil, du bekommst etwas Overhead.
    Übersichtlicher wird es auf jeden Fall und daher ist die Verwendung sicherlich richtig.

    Ich würde grundsätzlich vermeiden, für eine lokale Variable den gleichen Namen zu verwenden, wie für eine globale.
    Ein Fehler von MCS beim Programmieren des Compilers und schon wird der falsche Wert verwendet. Ich meine mich sogar zu erinnern, dass es das auch schon einmal gegeben hat im Zusammenhang mit gleichen Namen.


    Den "Nachteil" von ByRef hast du ja schon gesehen. Wenn man darum weiß, ist es allerdings eher ein Vorteil.
    Arrays kannst du übrigens gar nicht anders übergeben, da bei ihnen nur die Startadresse übergeben und nichts kopiert wird.
    Strings werden mit ByVal kopiert, aber du kannst dir vorstellen, dass dabei einiges an Zeit draufgeht -> Overhead.
    Es wird übrigens nichts "zurückkopiert".

    Hast du dir die Beispiele in den Samples schon angesehen, dort ist einiges erklärt.

    Der Speicher wird beim Verlassen der Funktion wieder freigegeben.
    Zu beachten ist noch, dass die lokalen Variablen nicht mit 0 oder "" vorbelegt werden. Sie enthalten einfach das, was beim letzten Verwenden der Speicherzelle dort stand.

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Zitat Zitat von for_ro Beitrag anzeigen
    Hallo Thomas,
    dein Wissensstand ist vollkommen in Ordnung.
    Eine Sache hierzu: Es funktionierte zwar, war aber manchmal zu langsam und zu unübersichtlich.
    Durch die Verwendung von Subs oder Funktionen wird es nicht schneller, im Gegenteil, du bekommst etwas Overhead.
    Übersichtlicher wird es auf jeden Fall und daher ist die Verwendung sicherlich richtig.
    Mit langsam habe ich mich etwas unglücklich ausgedrückt: Ich meinte das Schreiben des Programms an sich, nicht die Ausführgeschwindigkeit. Sry.

    Zitat Zitat von for_ro Beitrag anzeigen
    Ich würde grundsätzlich vermeiden, für eine lokale Variable den gleichen Namen zu verwenden, wie für eine globale.
    Ein Fehler von MCS beim Programmieren des Compilers und schon wird der falsche Wert verwendet. Ich meine mich sogar zu erinnern, dass es das auch schon einmal gegeben hat im Zusammenhang mit gleichen Namen.
    Also geht es, ist aber furchtbar böse und unübersichtlich - das habe ich mir fast schon gedacht.
    Wie verhält es sich mit zwei einzelnen Funktionen, die beide als Übergabevariablen A und B haben? Da sie lokal sind, wäre das denkbar?

    Zitat Zitat von for_ro Beitrag anzeigen
    Den "Nachteil" von ByRef hast du ja schon gesehen. Wenn man darum weiß, ist es allerdings eher ein Vorteil.
    Arrays kannst du übrigens gar nicht anders übergeben, da bei ihnen nur die Startadresse übergeben und nichts kopiert wird.
    Strings werden mit ByVal kopiert, aber du kannst dir vorstellen, dass dabei einiges an Zeit draufgeht -> Overhead.
    Es wird übrigens nichts "zurückkopiert".
    Achso: Die lokale Variable wird dann ja sowieso entfernt da die Prozedur/Funktion verlassen wird.

    Zitat Zitat von for_ro Beitrag anzeigen
    Der Speicher wird beim Verlassen der Funktion wieder freigegeben.
    Zu beachten ist noch, dass die lokalen Variablen nicht mit 0 oder "" vorbelegt werden. Sie enthalten einfach das, was beim letzten Verwenden der Speicherzelle dort stand.
    Auch beim definieren einer lokalen Variable mit LOCAL?

    Danke nochmals für die Hilfe!
    Grüße
    Thomas

Ähnliche Themen

  1. RS485 Verständnisfragen
    Von Snakey im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 5
    Letzter Beitrag: 26.01.2012, 17:33
  2. Schrittmotor ESB, Verständnisfragen
    Von axel88 im Forum Motoren
    Antworten: 8
    Letzter Beitrag: 07.07.2011, 10:41
  3. Parameter von Funktionen in Funktionen
    Von hosti im Forum C - Programmierung (GCC u.a.)
    Antworten: 22
    Letzter Beitrag: 29.10.2009, 09:37
  4. Übergabe von Werten an eine SUB per Byval
    Von mat-sche im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 23.11.2008, 11:52
  5. Gleichstrommotor Verständnisfragen
    Von Moresko im Forum Motoren
    Antworten: 12
    Letzter Beitrag: 12.01.2008, 18:16

Berechtigungen

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

LiFePO4 Speicher Test