static und const



  • Hallo, folgendes verstehe ich nicht richtig:

    static const uint8_t SBox[256] = {0x63, 0x7c, ...};
    

    Wenn das Objekt als static in einer Funktion deklariert wird, behält es seinen Wert nach einem Funktionsaufruf.
    Aber das tut es doch sowieso, wenn es als const deklariert ist oder nicht?
    Verstehe den Zusammenhang zwischen diesen beiden Bezeichnern nicht.
    Hoffe, dass mir jemand das erklären kann. Danke.



  • Bei const wird der Inhalt nicht verändert. Der Compiler erkennt Schreibzugriffe als Fehler.

    Bei static bleibt die Variable erhalten. Du hast bei jedem Aufruf der Funktion dieselbe Variable. Sie belegt nur einmal Speicher.

    Da deine Variable static ist, wird sie nur einmal angelegt (verbraucht nur einmal Speicher).
    Und da sie auch noch const ist, gibt es keine Nebeneffekte bei mehrmaligen Aufruf der Funktion.



  • Danke. Jetzt wird's mir klar.


Log in to reply