Notation C: pointeur vers tableau de caractères (string)

Pourquoi sont des pointeurs vers des tableaux de chars (ie. strings) écrit comme ci-dessous:

char *path

Au lieu de:

char *path[]

ou quelque chose comme ça?

Comment pourrais-je créer un pointeur vers un char et pas un string?

Quel livre êtes-vous à l'apprentissage de la C?
char *path[] est un pointeur vers un pointeur vers char. C'est le même char **chemin d'accès. char chemin[] ou char *chemin d'accès sont à la fois des pointeurs de char.
Le seul contexte où char *path[] est le même que char **path est dans une fonction de la liste des paramètres.
char *path[] est un tableau de pointeurs. Dans de nombreux contextes path permettra d'évaluer à un char**, mais il est encore en fait un tableau, pas un pointeur. Par exemple, on ne pouvait pas dire path = &some_char_pointer; comme si path ont été déclarées comme un char**.
Un pointeur de tableau de caractères serait un char (*ptr)[length];. À peine de l'utiliser pour que, depuis le tableau les adresses ne sont pas mutables.

OriginalL'auteur thom | 2011-05-17