Ciao, sono nuovo di questo sito e ho bisogno di aiuto per capire cosa sarebbe considerata la "norma" durante la codifica delle strutture in C che richiedono una stringa. Fondamentalmente mi chiedo quale dei seguenti modi potrebbe essere considerato il "standard" durante l'utilizzo di strutture in C per tenere traccia di tutta la memoria della struttura richiede:Come dovrei dichiarare le stringhe all'interno delle strutture C?
1) Fixed Size Stringa:
typedef struct
{
int damage;
char name[40];
} Item;
ora posso ottenere la dimensione utilizzando sizeof(Item)
2) Character Array Pointer
typedef struct
{
int damage;
char *name;
} Item;
so di poter memorizzare le dimensioni di name
utilizzando una seconda variabile, ma esiste un altro modo?
i) c'è qualche altro vantaggio di utilizzare la dimensione fissa (1)
char name[40];
contro facendo quanto segue e con un puntatore a una matrice char (2)?
char *name;
e se sì, qual è il vantaggio?
ii) Inoltre, la stringa che utilizza un puntatore a un array di caratteri (2) verrà memorizzata in modo sequenziale e immediatamente dopo la struttura (immediatamente dopo il puntatore alla stringa) o verrà memorizzata da qualche altra parte in memoria?
iii) Vorrei sapere come si può trovare la lunghezza di una variabile char *
stringa (senza utilizzare un size_t
, o valore intero per memorizzare la lunghezza)
Perché questo tag è C++? – Rapptz
@Rapptz: Suppongo perché il codice C++ spesso consuma ed espone API compatibili con C, dal momento che sono molto più compatibili con altri linguaggi –
Per C++ è idiomatico usare 'std :: string' -' struct Foo {std :: string f; }; '. –