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
characterstring literals sind global.
-
@manni66 Danke!