Что значат выражения *++argv и (*++argv)[0]?

Есть некие аргументы командной строки.
И есть выражение *++argv. написано, что это указатель на аргумент-строку.
А (*++argv)[0] это первый символ, и это эквивалентно **++argv.

Объясните пожалуйста логику этих выражений.
И пару вопросов.
1. *++argv почему это указатель? Если * означает разыменование.
2. (*++argv) [0] - зачем тут ++, если сколько не плюсуй, [0] будет указывать на первый элемент, то есть на само название программы.
  • Вопрос задан
  • 282 просмотра
Решения вопроса 1
petermzg
@petermzg
Самый лучший программист
argv - указатель определенного типа.
++ - оператор Pre-increment, для указателей делает увеличение на размер типа указателя.
* - оператор разыменования. Получение значения из памяти куда нацелен указатель.
[0] - оператор получения значения по индексу, для массивов.

Вам приходит указатель на массив значений командной строки, значения это строки.
++argv - указывает на начало второго значения из коммандной строки.
а [0] на первой символ этого значения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы