обугленного * ARGV [] представляет собой массив указателей, и каждый указатель указывает на массив символов (с нулевым завершением). Предположите, что вы передаете «Hello World» в качестве аргумента командной строки для вашей программы. Базовый адрес строки (нулевой конец символьного массива) хранится внутри argv [1]. Так как argv [1] указывает на строку, то argv [1] [0] дает символ в 0th
индекс в строке.
Теперь рассмотрим ваше задание:
char* test = argv[1][0];
Здесь с помощью ARGV [1] [0], вы на самом деле индексации внутри строки, на которую указывает
ARGV [1], и назначая charcater хранимую при 0-м индексе строки к тесту
указатель. Так как «test» является указателем таким образом, он обязан хранить адрес, а не значение.
выше присваивание присваивает значение символа, чтобы проверить, и так как персонажи
внутренне представлены в виде целых чисел в C, поэтому вы получаете предупреждение, что говорит:
incompatible integer to pointer conversion initializing
здесь целое значение относится к ARGV [ 1] [0], а указатель - тест.
выше назначение может быть использовано в качестве:
char *test = &argv[1][0]; // assignment 1
что эквивалентно:
char *test = argv[1]; // assignment 2
до тех пор, как индекс в присвоении 1 0.
Вы должны использовать например 'char * test = argv [1];' .'argv [1] [0] 'является типом' char', и вы назначили его 'char *', из-за чего вы вызываете проблему. –
Для распечатки 'char' вы должны использовать'% c'. '% s' ist, чтобы распечатать' '' 'завершенный' char' массив aka "string". – alk