• # Tentative d'explication

    Posté par . En réponse au message quand utiliser char * et quand utiliser un tableau. Évalué à 3.

    char variable[128] déclare un tableau de type caractère et de longueur 128. L'espace nécessaire pour stocker les 128 caractères est réservé en mémoire.

    char *variable déclare un pointeur, c'est-à dire une variable qui est destinée à contenir une adresse mémoire. Pour l'instant cette variable n'est pas initialisée, par conséquent elle pointe vers une adresse complètement indéterminée. Si tu essais d'écrire quelquechose à l'adresse pointée par cette variable, tu vas quasi obligatoirement violer la protection mémoire et provoquer une Segmentation fault.

    Ces deux déclarations sont donc bien différentes. Là où il peut y avoir confusion, c'est dans l'usage qu'on peut faire d'un tableau. Je m'explique : dans le premier cas, lorsque tu fait référence à ton tableau par son seul nom variable, tu fait référence à un pointeur, comme dans le second cas, à la différence près que cette fois-ci ton pointeur est initialisé et pointe vers la zone mémoire qui a été réservée au moment de la déclaration.

    Précision : une fonction ne peut pas retourner un tableau. Elle peut par contre retourner un pointeur qui pourrait être l'adresse de ton tableau par exemple.