C Verständisfrage objekt kopie



  • Hallo Leute,

    und zwar folgendes. Ich habe einen string "StringA"

    typedef char sStringA_t[50];
      const sStringA_t a = "2323";
      sStringA_t b = { 0 };
      b = a; //Geht nicht. änderbare LValue nötig was klar.
    

    wenn ich aber den string in ein struct verpacke:

    typedef struct sStringB_t
    {
        char s[50];
    }sStringB_t;
    
    
        
        sStringB_t a = { "232323" };
        sStringB_t b = { 0 };
        b = a; //Geht
    

    nun das ist mir nicht "ganz" klar... was der compiler da macht...

    Im Ersten Fall ist der string ein Pointer auf ein speicher bereich von 50 chars und muss da memcpy bzw. strcpy machen.

    Aber im zweiten fall ist das ja ein objekt aufm stack, und der compiler macht dann bei der Zuweisung eine impliziertes memcpy?


  • Mod

    Das hast du dir korrekt erschlossen.

    Wobei man vielleicht noch nachtragen sollte, dass das Speicherlayout bei beiden identisch ist. Die Unterschiede sind syntaktischer Art, wie ein Array und ein Struct von der Grammatik von C her unterschiedlich benutzt werden.


Anmelden zum Antworten