Cela pourrait sembler trop fou mais je viens de penser. En C Pourquoi
char *pc = 'H'; // single character char *ps = "hello"; // a string
4 Réponses :
It peut em> détenir un et dans de nombreux compilateurs, ce fait em> générer un avertissement: p> char code> car il existe une conversion implicite de char code> sur char * code> (via < Code> int code>), et parce que Tailleof (Char *)> = Tailleof (Char) Code>. Vous ne devriez pas em> le faire, cependant (techniquement, il s'agit d'un comportement indéfini car la valeur numérique littérale d'un caractère n'est probablement pas une adresse de pointeur valide à un type char code>) .
dans in p> 'h' code> en tant que int code> sera casse sur un char * code> et Sera utilisé pour initialiser pc code>, le compilateur doit donner un avertissement à ce sujet. p> ps code>. p> p>
Lorsque je compile les lignes de code ci-dessus à l'aide de g ++, je reçois l'avertissement suivant:
test-12.c:1:12: warning: initialization makes pointer from integer without a cast [enabled by default]
const char *ps = "hello";
Je ne pense pas
char * pc = 'h' code> fait ce que vous pensez.Si vous avez essayé
printf ("% s", PC); code>, des choses très intéressantes pourraient arriver. Probablement soit une production de déchets ou un crash.Écoutez vos avertissements ou augmentez votre niveau d'avertissement.
Toujours utiliser:
g ++ -wall code>. Cela vous aidera à enregistrer des erreurs d'exécution comme celle que votre code provoque probablement ...