2010-09-22 29 views
41

Mi profesor y un par de estudiantes discuten si argv es nulo o no. Mi amigo escribió un pequeño programa e imprimió null, pero otro niño dijo que probablemente está simplemente leyendo en la memoria en blanco. ¿Alguien puede resolver esta discusión?argv [argc] ==?

Respuesta

76

de la norma:

5.1.2.2.1 Programa de inicio
...
- argv [argc] será un puntero nulo.

Así, sí; argv es nulo terminado

+6

No se vuelve más claro que eso;) – caf

+1

Guau, no sabía eso. ¿Por qué entonces el argc de todos modos? –

+5

No sé ** por qué **. Pero hace que escribir algunos programas sea un poco más fácil al evitar tener que recorrer la matriz 'argv' solo para contar los argumentos. – pmg

40

De acuerdo con la norma, "argv [argc] será un puntero nulo" (5.1.2.2.1).

+0

¿Por qué y cómo se convirtió en estándar? ¿Alguna idea? – Reigel

+12

@Reigel: la página man para 'exec' de 1979 (http://plan9.bell-labs.com/7thEdMan/v7vol1.pdf) muestra que esto es anterior al estándar en bastante, y contiene una posible pista sobre por qué es así: "Argv es directamente utilizable en otra versión porque argv [argc] es 0." – bk1e