Così ho fatto il seguente test:Caratteri letterali stringa che contengono ' 0' - perché non sono gli stessi?
char* a = "test";
char* b = "test";
char* c = "test\0";
E ora la domanda:
1) E 'garantito che a==b
? So che sto confrontando gli indirizzi. Questo non è pensato per confrontare le stringhe, ma se letterali stringa identici sono memorizzati in una singola posizione di memoria
2) Perché non a==c
? Il compilatore non dovrebbe essere in grado di vedere che si riferiscono alla stessa stringa?
3) È un ulteriore \0
aggiunto alla fine di c
, anche se ne contiene già uno?
Non volevo chiedere a 3 domande diverse per questo perché sembrano in qualche modo correlati, mi dispiace per quello.
Nota: il tag è corretto, sono interessato al C++. (anche se si prega di specificare se il comportamento è diverso per C)
Dovrebbe essere 'char const * a = ...'. –
aeb hanno lo stesso valore, ma ciò non significa necessariamente che siano la stringa _same_. –
@HunterMcMillen - in realtà è esattamente ciò che vorrebbe dire. –