globlae Variable behält Wert nicht nach Funktion



  • Hallo,
    ich habe ein Programm geschrieben mit einer globalen Variable.
    Mit der globalen Variable wird eine Funktion aufgerufen die den Wert der Variablen ändert. Nachdem die Funktion durchlaufen wurde nimmt die globale Variabel aber wieder den Wert wie vor dem Funktionsaufruf an. Ich verstehe nicht wieso. 😡 Vielleicht weis einer Rat. 👍 Ich möchte das der Wert der globalen Variable auch nach der Funktion geändert bleibt.



  • mal den Code posten .....



  • Ich vermute, du hast aus Versehen eine lokale Variable gleichen Namens in deiner Funktion gebaut und nur die lokale verändert. Ein Funktionsparameter zählt dabei auch als lokale Vraiable.



  • Das ist der Abschnitt in dem die Variable struct eingabeparameter und ebenenparameter deklariert und aufgerufen werden.//Einlesen der Variablen: ALT, XM, dT_ISA, dP_ISA****************************

    **struct eingabeparameter eingabe;

    struct ebenenparameter ebene_1;**

    value=m_ui->tableWidget->item(0,1)->text();
    eingabe.ALT=value.toDouble();

    value=m_ui->tableWidget->item(1,1)->text();
    eingabe.XM=value.toDouble();

    value=m_ui->tableWidget->item(2,1)->text();
    eingabe.dT_ISA=value.toDouble();

    value=m_ui->tableWidget->item(3,1)->text();
    eingabe.dP_ISA=value.toDouble();

    //Triebwerk**********************************************************************

    ebene_1.ebene=1;
    umgebung(eingabe,ebene_1);
    //Ausgabe der Ebenenparameter***************************************************
    **
    [b]Hier ist die Funktion Umgebung in der die Variablen struct eingabeparameter und ebenenparameter verändert werden. Sie behalten aber den Wert nicht nach Ende der Funktion.**#include <math.h>
    #include "umgebung.h"
    #include "variablen.h"

    //Gültig bis 30000m

    void umgebung(struct eingabeparameter A,struct ebenenparameter 😎
    {
    if (A.ALT<=11000.){
    B.TS=288.15+A.dT_ISA-0.0065A.ALT;
    B.PS=(101.325+A.dP_ISA)pow(288.15/B.TS,-5.25588);
    }
    if ((A.ALT>1100.)&&(A.ALT<=24994.)){
    B.TS=216.67+A.dT_ISA;
    B.PS=(22.63253+A.dP_ISA)/exp(0.000157689
    (A.ALT-109998.1));
    }
    if (A.ALT>24994.){
    B.TS=216.65+A.dT_ISA+0.0029892
    (A.ALT-24994);
    B.PS=(2.5237+A.dP_ISA)pow(216.65/B.TS,11.8);
    }
    //Für XM > 0
    B.FAR=0.;
    B.R=287.06;
    B.CP=cp(B.TS,B.FAR);
    B.VS=pow(B.CP*B.R*B.TS/(B.CP-B.R),0.5);
    B.XM=A.XM;
    B.H=h(B.TS,B.FAR)+0.5*pow((B.XM*B.VS),2);
    B.T=t(B.H,B.FAR);
    B.P=B.PS*pow(1+B.R* B.XM
    B.XM*0.5/(B.CP-B.R),B.CP/B.R);

    }



  • Ich weiß zwar nicht genau, welche Sprache das ist, aber vielleicht geht es ja, wenn Du so machst:

    void umgebung(struct eingabeparameter& A,struct ebenenparameter& B)
    


  • AlexAbdll schrieb:

    ich habe ein Programm geschrieben mit einer globalen Variable.
    Mit der globalen Variable wird eine Funktion aufgerufen die den Wert der Variablen ändert.

    Globale Variable als Funktionsparameter übergeben beisst sich irgendwie, oder? Wenn das Ding eh global ist brauchst du das nicht extra der Funktion übergeben.
    Nebenbei ist dein Codeausschnitt richtig grausam zu lesen, ich tu mir das nicht an. Poste das bitte nochmal SCHÖN FORMATIERT mit cpp-Tags (Button C/C++).
    So im Überfliegen habe ich aber eh kein C++ entdeckt, schaut alles nach C aus.



  • Dieser Thread wurde von Moderator/in GPC aus dem Forum Andere GUIs - Qt, GTK+, wxWidgets in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten