Programación en C  | Tamaños de arrays y sizeof()

¿Nunca te has preguntado porqué main está definido como «int main(int argc, char** argv)» ? Es decir, si nos dan directamente un array con los valores de los argumentos, ¿no es más sencillo correr un bucle y usar un sizeof como delimitador?

¡Pues resulta que no! Al parecer sizeof solo funciona para encontrar la longitud del array si lo aplicas al array original, pero sin embargo si intentamos hacer el sizeof de un puntero, sizeof devolverá el tamaño del puntero y no del array. Por lo tanto, ¡cuando pedimos la longitud del array como argumento (argc) es necesario y no redundante!

Sin embargo, ya que argv termina convenientemente en un puntero a NULL se puede jugar un poco alrededor de esto, pero de todas maneras no es buena praxis, siendo lo estándar llevar en otra variable o en una estructura una indicación del tamaño de un array decaido a puntero.

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.