2010-09-22 14 views
41

Il mio professore e un paio di studenti stanno discutendo sul fatto che argv sia terminato o no. Il mio amico ha scritto un piccolo programma e ha stampato null ma un altro ragazzo ha detto che probabilmente sta semplicemente leggendo nella memoria vuota. Qualcuno può risolvere questa discussione?argv [argc] ==?

risposta

76

dallo standard:

5.1.2.2.1 all'avvio del programma
...
- argv [argc] è un puntatore nullo.

Quindi sì; argv è nullo terminato

+6

Non è più chiaro di così;) – caf

+1

Wow, non lo sapevo. Perché allora l'argc comunque? –

+5

Non so ** perché **. Ma rende la scrittura di alcuni programmi un po 'più semplice evitando di dover camminare sulla matrice 'argv' solo per contare gli argomenti. – pmg

40

Secondo lo standard, "argv [argc] deve essere un puntatore nullo" (5.1.2.2.1).

+0

Perché e come è diventato standard? Qualche idea? – Reigel

+12

@Reigel: la pagina man di 'exec' del 1979 (http://plan9.bell-labs.com/7thEdMan/v7vol1.pdf) mostra che questo anticipa lo standard di un bel po 'e contiene un possibile suggerimento su perché è così: "Argv è direttamente utilizzabile in un altro execv perché argv [argc] è 0." – bk1e