Gültigkeitsbereiche (scope)



  • Also ich dachte bisher immer, dass ich C recht gut kenne, doch dann stiess ich in den Standardlibraries auf folgende Funktions - Deklaration:

    char *ctime( const time_t *timer );

    Also das verstehe ich nicht, sobald die Funktion zurückkehrt ist doch der die Speicherstelle, auf welche der Pointer zeigt, nicht mehr gültig ???
    Was soll denn das ?

    Gruss Ishildur



  • ctime liefert einen Zeiger auf einen statischen Buffer zurück,den es sich mit gmtime und den localtime Funktionen teilt.
    Daher überschreibt ein Aufruf dieser Funktionen das Ergebniss eines vorherigen Aufrufs.



  • Ach so, also eine globale Variable ?



  • static sagt er
    


  • Was soll das denn wieder heissen ? Wenn man in einer funktion eine static Variable deklariert, ist diese doch für andere Funktionen nicht zugänglich ?? 😕 Also kann Sie doch nur global sein und dann ist sie automatisch static



  • eine static variable existiert natuerlich solange des programm existiert (vereinfacht ausgedrueckt)

    Allerdings kann man nicht von aussen auf sie zugreifen:

    ctime::staticVar
    geht nicht.

    wenn du aber einen Zeiger auf diese variable hast, kannst du natuerlich zugreifen (schliesslich liegt die variable im speicher deines programmes und da darfst du rumzeigen wie du willst)

    kleines C++ beispiel: du kannst ja auch auf private variablen einer klasse zugreifen, wenn du einen zeiger/referenz darauf hast)



  • Nochmal zum nachlesen:

    A call to ctime modifies the single statically allocated buffer used by the gmtime and localtime functions. Each call to one of these routines destroys the result of the previous call. ctime shares a static buffer with the asctime function. Thus, a call to ctime destroys the results of any previous call to asctime, localtime, or gmtime.


Anmelden zum Antworten