2010-09-22 2 views
41

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

ответ

76

От стандарта:

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

Да, да; argv имеет нулевой конец

+6

Это не получается более ясно, чем это;) – caf

+1

Вау, я этого не знал. Почему же тогда арк? –

+5

Я не знаю, почему **. Но это немного облегчает запись некоторых программ, избегая необходимости ходить по массиву 'argv' только для подсчета аргументов. – pmg

40

Согласно стандарту «argv [argc] должен быть нулевым указателем» (5.1.2.2.1).

+0

Почему и как он стал стандартным? Есть идеи? – Reigel

+12

@Reigel: справочная страница 'exec' с 1979 года (http://plan9.bell-labs.com/7thEdMan/v7vol1.pdf) показывает, что это предшествует стандарту довольно много и содержит возможный намек на почему это так: «Аргв напрямую можно использовать в другом execv, потому что argv [argc] равен 0." – bk1e

Смежные вопросы