En C, je peux initialiser une chaîne de caractères dans une déclaration de pointeur de la même manière, je peux initialiser une chaîne de caractères dans un char déclaration de tableau?

Ces deux lignes de code pour obtenir le même résultat? Si j'avais ces lignes dans une fonction, à la chaîne stockée sur la pile dans les deux cas? Est-il une bonne raison pourquoi je devrais utiliser l'un sur l'autre, en dehors de ne pas avoir à déclarer le terminateur null dans la première ligne de code?

char  s[] = "string";
char* s   = "string
char  s[] = "string";
char* s   = "string\0";
"
;
Juste pour information, vous n'avez pas besoin de le \0 dans le deuxième exemple. Lors de l'utilisation de guillemets, \0 est toujours inséré dans le tableau.
Et juste pour le vocabulaire, ce dont vous parlez ne sont pas des devoirs, mais des déclarations avec les initialiseurs. Ils obéissent à des règles différentes. E. g votre première déclaration ne serait pas permis comme une mission, vous ne pouvez pas attribuer les tableaux.
double possible de C: différences entre pointeur et tableau

OriginalL'auteur aoeu | 2010-10-29