Почему?

Компьютеры программирование C++

Почему

void main(int argc, char **args)
{
char *fname;
*args++;
fname=*args;
}

не эквивалентно

void main(int argc, char **args)
{
char *fname;
fname=++*args;
}

?

Примечание:
a = i++ сначала присвоение, потом инкремент
a = ++i сначала инкремент, потом присвоение
?

Примечание:
ясно, спасибо.

Примечание:
то есть надо написать fname=*(++args); ?
Ответы:
А Вы в курсе, чем отличаются записи a++ и ++a?
В *args++ - сначала разыменовываем указатель (*) - получаем массив значений аргументов cmd, потом увеличиваем значение постинкрементом - args теперь указывает на 2 аргумент (при параметрах командной строки:"first second" args в следующей операции будет указывать на "second"). При ++*args - разыменовываем указатель (*) - получаем массив значений аргументов cmd, потом увеличиваем значение преинкрементом - args теперь указывает на 2 символ 1 аргумента (при параметрах командной строки:"first second" args будет указывать на "irst second"). Ant1973 прав.


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.