argv [argc] ==?

Мой профессор и пара студентов спорят оargv теряется или нет. Мой друг написал небольшую программу и распечаталnull но другой ребенок сказал, что он, вероятно, просто читает в пустую память. Может кто-нибудь решить эту дискуссию?

Ответы на вопрос(2)

Решение Вопроса

5.1.2.2.1 Запуск программы
...
- argv [argc] должен быть нулевым указателем.

Так да; argv имеет нулевое окончание

 Christian Rau12 мая 2011 г., 02:33
Вау, я этого не знал. Почему тогда argc в любом случае?
 gbmhunter26 мар. 2014 г., 03:55
Я заметил, что getopt () может произойти сбой, если argv [argc] не является указателем NULL (при использовании его в библиотеке Clide,github.com/gbmhunter/clide-cpp).
 caf23 сент. 2010 г., 02:19
Это не становится более четким, чем это;)
 pmg03 сент. 2012 г., 22:04
@Джек:argv указатель;argv[0] это тоже указатель. По всей вероятностиsizeof(argv) / sizeof(argv[0]) оценивает1 ... в любом случае, ваша идея похожа на то, что я сказал (не нужно идти кargv массив).
 pmg12 мая 2011 г., 10:10
Я не знаюЗачем, Но это делает написание некоторых программ немного легче, избегая необходимости ходить поargv массив только для подсчета аргументов.
 mic_e26 сент. 2012 г., 12:02
Тем не менее, операционная система (в случае Linux, загрузчик ELF) должна пройти argv, так как она передается только argv в execve ().
 Jack03 сент. 2012 г., 21:50
Ммм .. почему: argc:if(argc <= 3) /* not enough arguments */ Я думаю лучше чемif(sizeof(argv) / sizeof(argv[0]) <= 3)

.2.1).

 Reigel23 сент. 2010 г., 04:15
Почему и как это стало стандартом? Любая идея?
 bk1e23 сент. 2010 г., 08:46
@Reigel: справочная страница дляexec с 1979 г. (plan9.bell-labs.com/7thEdMan/v7vol1.pdf) показывает, что это немного предшествует стандарту и содержит возможную подсказку о том, почему это так: «Argv напрямую используется в другом execv, потому что argv [argc] равен 0.»

Ваш ответ на вопрос