Originariamente inviato da gianvituzzi
Salve,

ho visto che in c++ sembra non esistere il concetto di stringhe, quindi bisogna sempre dare una dimensione alle variabili char quando si definiscono, allora mi chiedo: che differenza c'è tra:

codice:
char k[20] = "Hello World!";
e

codice:
char * k = "Hello World!";
non mi converrebbe usare sempre quest'ultimo tipo di assegnazione?
Il secondo è sbagliato, dovrebbe essere const char *. La differenza tra il primo e il secondo è che il primo alloca un buffer di 20 caratteri sullo stack inizializzandolo alla stringa in questione, mentre il secondo alloca lo spazio per un puntatore e ci assegna l'indirizzo della stringa "Hello World!" che si trova nella tabella delle stringhe dell'eseguibile, e, come tale, non è modificabile (per questo dovrebbe essere un const char *).
Se vuoi una soluzione analoga alla prima (per cui puoi modificare la stringa) ma leggermente più comoda puoi usare il metodo di XWolverineX.

In generale comunque in C++ si preferisce usare la classe string, anche se comunque le stringhe C ASCIIZ te le troverai sempre tra i piedi.