Форум программистов, компьютерный форум CyberForum.ru

Аргумент argv в функции main() - C++

Восстановить пароль Регистрация
 
PaulVIT
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 9
31.08.2016, 11:05     Аргумент argv в функции main() #1
Здравствуйте.
Возникли некоторые непонимания при работе с аргументом argv и указателями в целом.

Мне сказали, что, при передаче адреса массива символов в cout, C++ автоматически выведет весь массив.
Почему же тогда, чтобы обратиться к массиву символов, на которые указывает argv, нужно писать именно argv[x]? Ведь argv[x] = *(argv + x), а конструкция вида argv + x уже возвращает адрес массива.

То есть мне казалось, что *(argv+x) означает: взять адрес и вернуть то, что в нем записано. А адрес массива - это адрес его первого элемента.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2016, 11:05     Аргумент argv в функции main()
Посмотрите здесь:

C++ Аргументы main(int argc, char *argv[])
C++ Аргумент функции - массив строк
Безымянный аргумент функции C++
C++ Передача функции в аргумент
C++ Не читается аргумент функции
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Martein
Оператор ЭВМ 6 разряда
 Аватар для Martein
657 / 68 / 12
Регистрация: 22.06.2014
Сообщений: 146
31.08.2016, 11:19     Аргумент argv в функции main() #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
На самом деле вас обманули про argv. argv имеет тип char**, что означает указатель на массив указателей на char. Конструкция вида argv[i] указывает на i-ый указатель в массиве argv, который в свою учередь указывает на первый символ i-го параметра. Исходя из этого строка cout << argv выведет адрес самого массива argv (char**), а вот уже обращаясь по индексу к массиву возвращаться будут char*, то есть строки в стиле Си, содержащие параметры программы.
PaulVIT
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 9
31.08.2016, 11:30  [ТС]     Аргумент argv в функции main() #3
Что ж, это многое объясняет.
Только не понятно, почему аргумент представлен как char* argv[]. Это ведь означает массив указателей или я что-то путаю?
HelicopterK52
634 / 177 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
31.08.2016, 11:34     Аргумент argv в функции main() #4
Цитата Сообщение от PaulVIT Посмотреть сообщение
Это ведь означает массив указателей или я что-то путаю?
Ну, как бэ и да и нет, но не будем об этом.
Цитата Сообщение от PaulVIT Посмотреть сообщение
почему аргумент представлен как char* argv[]
char *argv[] и char **argv эквивалентны.
PaulVIT
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 9
31.08.2016, 12:32  [ТС]     Аргумент argv в функции main() #5
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Ну, как бэ и да и нет
Это как?
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 238
31.08.2016, 13:01     Аргумент argv в функции main() #6
PaulVIT, можно считать это двумерным массивом
Yandex
Объявления
31.08.2016, 13:01     Аргумент argv в функции main()
Ответ Создать тему
Опции темы

Текущее время: 02:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru