2013-05-27 13 views
11

Sto lavorando con le stringhe.conversione deprecata dalla costante di stringa a "char *" in c

Ogni volta che eseguire il seguente programma ottengo un errore come conversione deprecato da costante di stringa a 'char' in c * sulla linea char *p = "hello"

Che cosa sto facendo di sbagliato?

Cosa significa questo errore? Come posso correggerlo?

Il mio codice è:

#include<stdio.h> 
int main() 
{ 
    char *p = "hello"; 
    printf("%s",p+1); 
    return 0; 
} 
+2

errore, ma può essere di avvertimento ... perché le stringhe letterali sono 'const char *' tipi –

+1

const char * p = "ciao" –

+0

@ user2227862 Leggi anche questo: http://en.wikipedia.org/wiki/Const-correctness –

risposta

16

Questo dovrebbe essere un avvertimento (anche se potrebbe aver impostato il compilatore per il trattamento di avvisi come errori, che spesso è una buona idea).

Quello che vuoi è: char const *p = "hello"; invece.

Il tentativo di modificare un valore letterale stringa fornisce un comportamento non definito. Il const impedisce di farlo per errore (ad esempio, il codice che tenta di scrivere tramite il puntatore non verrà compilato, a meno che non si rimuova il qualificatore const, ad esempio con un cast).

5

Questo è un avviso, perché la stringa "Hello" è una costante e si sta tentando di memorizzarla in non const char *. A slove il problema o renderlo

const char* p = "Hello" o char[] p = "Hello"

non
+0

non 'const char * p', ma' char const * p' un po 'di compioler potrebbe darti dei waring per 'const char *' –

+4

@GrijeshChauhan: Un compilatore * potrebbe * generare un avvertimento per quasi qualsiasi (o nessuna) ragione, ma io Sarebbe almeno un po 'sorpreso di vederne uno per mettere 'const' prima del tipo invece che dopo. Lo standard richiede che entrambi siano accettati. –

+1

@GrijeshChauhan puoi specificare quale compilatore. Perché const char e char const sono entrambi uguali, penso che – Daemon

Problemi correlati