char * argv [] est un tableau de pointeurs, et chaque pointeur pointe sur un tableau de caractères (terminé par un caractère nul). Supposons que vous transmettiez "Hello World" comme argument de ligne de commande à votre programme. L'adresse de base de la chaîne (tableau de caractères à terminaison nulle) est stockée dans argv [1]. Puisque argv [1] pointe sur une chaîne, argv [1] [0] donne le caractère 0th
dans la chaîne.
Considérons maintenant votre mission:
char* test = argv[1][0];
ici en utilisant argv [1] [0], vous indexez réellement à l'intérieur de la chaîne pointée par le
argv [1], et l'affectation du charcater stocké au 0e indice de la chaîne à l'essai
pointeur. Puisque "test" est un pointeur, il est lié à stocker l'adresse et non la valeur.
L'attribution ci-dessus attribue une valeur de caractère à tester, et que les personnages sont
représentés en interne comme des entiers dans C, donc vous obtenez un avertissement qui dit:
incompatible integer to pointer conversion initializing
ici la valeur entière se réfère à argv [ 1] [0] et le pointeur est test.
L'affectation ci-dessus peut être utilisé comme:
char *test = &argv[1][0]; // assignment 1
qui équivaut à:
char *test = argv[1]; // assignment 2
tant que l'indice dans l'attribution 1 est 0.
Vous devez utiliser comme 'char * test = argv [1];' .'argv [1] [0] 'est de type' char' et vous l'avez assigné à 'char *' ce qui cause votre problème. –
Pour imprimer un 'char', vous devez utiliser'% c'. '% s' doit afficher un tableau' char' '' '' terminé par '0', appelé" chaîne ". – alk