kostenloser Webspace werbefrei: lima-city


Werte verändern sich außerhalb der Funktion??

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    krisi12345

    Kostenloser Webspace von krisi12345

    krisi12345 hat kostenlosen Webspace.

    Ich hab einen Array der später mit Floats gefüllt werden soll. Die Variable ist vor der main Funktion bzw. vor allen anderen Funktion gesetzt worden damit es keine Fehler gibt.
    In einer Funktion wird der Array dann mit Floats gefüllt.

    Wenn ich die floats dann in der Funktion mit z.B. printf anzeigen lasse ist alles so wie es sein soll.
    Geschieht das ganze aber außerhalb der Funktion verändern sich die floats einfach?!

    Aus einer -1.0 wird z.B. -0.666646 und ich weis echt nicht woran das liegen könnte?

    Übrigens wird der Array der Funtkion nicht übergeben (wenn das damit zusammenhängen könnte)

    Weis einer woran das liegt???
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ist dir der Unteschied zwischen lokalen und globalen Variablen bekannt?

    Und ohne deinen Code zu kennen, können wir nur Mutmaßungen einstellen. Bitte ediere ihn in dein Anfangspost hinein.
  4. bladehunter schrieb:
    Ist dir der Unteschied zwischen lokalen und globalen Variablen bekannt?

    Und ohne deinen Code zu kennen, können wir nur Mutmaßungen einstellen. Bitte ediere ihn in dein Anfangspost hinein.


    Wenn er das Array allerdings vor der main()-Funktion intialisiert hat, sollte es eigentlich global sein und in allen unteren Funktionen funktionieren, oder nicht?
  5. robbmaster schrieb:
    Wenn er das Array allerdings vor der main()-Funktion intialisiert hat, sollte es eigentlich global sein und in allen unteren Funktionen funktionieren, oder nicht?

    Nein. Entscheident ist, wo eine Variable deklariert wurde. Ist dies außerhalb von Funktionen, so ist sie global und von überall erreichbar, es sei denn, es gibt eine lokale Variable mit dem gleichen Namen.

    Variablen, die innerhalb von Funktionen deklariert sind, sind lokal und müssen über eine Referenz oder einen Pointer an ander Funktionsaufrufe übergeben werden, damit diese anderern Funktionsaufrufe Zugriff darauf haben. Eine Ausnahme sind hier statische Variablen, die innerhalb der gleichen Funktion immer verfügbar sind.

    Und main ist eine stinknormale Funktion. Sie ist zwar mit dem Betriebssystem verbunden, aber das war's auch schon.
  6. Nichts anderes habe ich doch eigentlich gesagt?
    Wenn sie außerhalb der main()-Funktion, damit meinte ich außerhalb jeder Funktion deklariert wird, ist sie dann in jeder Funktion erreichbar, dar sie global ist. Oder haben wir uns missverstanden?
    Die main() Ist sicherlich eine 'stinknormale' Funktion, mit dem kleinen aber entscheidenen Unterschied, dass sie durch ihre Bindung zuerst ausgeführt wird.
  7. Also wie ich das sehe gibt es hier zwei Szenarien. Entweder er schreibt mit Zeigern irgendwo wild im Speicher rum ohne das zu bemerken oder die bei globale Variablen wahrscheinlichere Version: Er hat ohne es zu merken einen Funktionsaufruf mit einer Funktion, die die globale Variable verändert. Und damit zeigt sich mal wieder das globale Variablen wegen ihrer Seiteneffekte eine unkalkulierbare Quelle für Laufzeit-Bugs sind.
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!