Gültigkeitsbereich von character literalen in C



  • Hallo zusammen,

    ich habe C code gesehen, bei dem ein character Literal lokal erzeugt und global als Pointer gespeichert wird. Es scheint zu funktionieren:

    Type Deklaration:

    typedef struct
    {
         const char * Name;
    } Info_t
    
    static Info_t tInfo = {0};
    

    Function die das übergebene character mit einem static pointer global hält.

    void  v_AddName(const char * Name)
    {
        tInfo.Name = Name;
    }
    

    Die aufrufende Funktion mit dem zu übergebenden character Literal

    void calling_function(void)
    {
        v_AddName("Hans");
    }
    

    Was mich wundert ist, dass "Hans" nur lokal definiert wird und dann global mittels eines static pointer gehalten wird. Ist das so OK? Wenn ja, warum funktioniert das so?



  • @Mike-M alle character string literals sind global.



  • @manni66 Danke!


Log in to reply