Globale Variablen / Globale Zeiger



  • Hallo,

    Es wird ja immer wieder gesagt das Globale Variablen von schlechtem Programmierstyl zeugen. Nun wollte ich wissen wie es mit Globalen Zeigern aussieht?

    Ich erläutere das mal an bissl Code:

    int* zeiger;
    
    main()
    {
     int i = 4;
     zeiger = i;
    }
    
    void funtion()
    {
     int i;
     i = zeiger;
    }
    

    Ist das vom Prinzip her besser oder eigentlich das gleiche?

    MfG Zorbas



  • Zorbas schrieb:

    Hallo,

    int* zeiger;
    
    main()
    {
     int i = 4;
     zeiger = i;
    }
    
    void funtion()
    {
     int i;
     i = zeiger;
    }
    

    1. es sollte zeiger = &i; und i = *zeiger heißen.

    Ist das vom Prinzip her besser oder eigentlich das gleiche?

    Natürlich ist vom Prinzip dasselbe, Zeiger sind ja auch Variablen.



  • Danke für zweitens.

    Und zu erstens, tut mir leid ich werd nie wieder code schreiben der einfach nur dazu da is zu erklären was ich will...



  • Zorbas schrieb:

    Und zu erstens, tut mir leid ich werd nie wieder code schreiben der einfach nur dazu da is zu erklären was ich will...

    ich habe nie gesagt, du solltest es nicht tun, ich hab lediglich deine Fehler korrigiert.



  • Zorbas schrieb:

    Es wird ja immer wieder gesagt das Globale Variablen von schlechtem Programmierstyl zeugen. Nun wollte ich wissen wie es mit Globalen Zeigern aussieht?

    das kommt drauf an.
    globale variablen sind immer dann 'schlechter programmierstil', wenn man keinen handfesten grund dafür hat, dass sie global sind. sonst nicht. das trifft auf pointer und 'normale variablen' gleichermassen zu.
    in C hast du die möglichkeit, zugriffe auf variablen ausserhalb von funktionen durch das keyword 'static' einzuschränken. dann kann nur vom gleichen source-file darauf zugegeriffen werden, in dem diese variablen angelegt wurden.
    🙂



  • Undertaker schrieb:

    in C hast du die möglichkeit, zugriffe auf variablen ausserhalb von funktionen durch das keyword 'static' einzuschränken. dann kann nur vom gleichen source-file darauf zugegeriffen werden, in dem diese variablen angelegt wurden.
    🙂

    In der gleichen Übersetzungseinheit. Nicht nur in der gleichen Source-Datei. 🙂



  • SeppSchrot schrieb:

    In der gleichen Übersetzungseinheit. Nicht nur in der gleichen Source-Datei. 🙂

    naja, .c-files #includen oder code in headern haben soll man doch nicht 😉



  • globale variablen sind immer dann 'schlechter programmierstil', wenn man keinen handfesten grund dafür hat, dass sie global sind. sonst nicht.

    Hm, so hab ich das ja noch nie gelesen. Gut, jetz weis ich wenigstens warum das so ist. 😃



  • Undertaker schrieb:

    SeppSchrot schrieb:

    In der gleichen Übersetzungseinheit. Nicht nur in der gleichen Source-Datei. 🙂

    naja, .c-files #includen oder code in headern haben soll man doch nicht 😉

    Ja schon, nur mich hatte das beim Lernen verwirrt, dass eine static-Variable im Header (und das darf man ja) in jeder .c eine andere ist, obwohl man ja den gleichen Header einband. Seitdem denke ich nur noch in Übersetzungseinheiten 🙂



  • SeppSchrot schrieb:

    Ja schon, nur mich hatte das beim Lernen verwirrt, dass eine static-Variable im Header (und das darf man ja) in jeder .c eine andere ist, obwohl man ja den gleichen Header einband. Seitdem denke ich nur noch in Übersetzungseinheiten 🙂

    *schluck* wo gibt's das?
    wenn jemand sowas macht, war das entweder ein versehen oder er wollte dich ärgern.
    🙂



  • Undertaker schrieb:

    SeppSchrot schrieb:

    Ja schon, nur mich hatte das beim Lernen verwirrt, dass eine static-Variable im Header (und das darf man ja) in jeder .c eine andere ist, obwohl man ja den gleichen Header einband. Seitdem denke ich nur noch in Übersetzungseinheiten 🙂

    *schluck* wo gibt's das?
    wenn jemand sowas macht, war das entweder ein versehen oder er wollte dich ärgern.
    🙂

    Weiß ich nicht mehr. Kann auch gut möglich sein, dass es eine Eigenerfindung von mir war. Wenn ich keine schlechten Beispiele finde, dann schaffe ich mir selbst welche 😃


Anmelden zum Antworten