En passant de chaîne par une fonction (programmation en C)

J'ai juste commencé à apprendre les pointeurs, et après beaucoup d'ajout et de suppression de *s mon code pour la conversion d'une chaîne saisie en majuscules, enfin, fonctionne..

#include <stdio.h>
char* upper(char *word);
int main()
{
    char word[100];
    printf("Enter a string: ");
    gets(word);
    printf("\nThe uppercase equivalent is: %s\n",upper(word));
    return 0;
}

char* upper(char *word)
{
    int i;
    for (i=0;i<strlen(word);i++) word[i]=(word[i]>96&&word[i]<123)?word[i]-32:word[i];
    return word;
}

Ma question est, tandis que l'appel de la fonction, j'ai envoyé word qui est elle-même un pointeur, donc dans char* upper(char *word) pourquoi ai-je besoin pour utiliser *word? Est-il un pointeur vers un pointeur? Aussi, le char* il est parce qu'elle renvoie un pointeur sur un caractère ou chaîne de droite? Merci de me préciser concernant la façon dont cela fonctionne.

Je suis confus de ce que vous demandez. Demandez-vous pourquoi il est supérieur(char *mot) et non supérieur(char mot)?
la fonction supérieure demande un pointeur en paramètre, et de vous fournir un pointeur (word). c'est la bonne façon pour autant que je sais.
Pour aider à éliminer la confusion, de changer le nom de la word paramètre upper ou de la variable locale word dans votre code.
Pourquoi ne pas utiliser toupper dans la boucle?
Mehta: Si vous avez trouvé une réponse utile, souvenez-vous de l'accepter

OriginalL'auteur Shashwat Black | 2011-12-17