Hoy por cierto, de forma incidental definí una matriz bidimensional con el tamaño de una dimensión siendo 0, sin embargo, mi compilador no se quejó. Me encontré con lo siguiente, que afirma que esto es legal, al menos en el caso de gcc:Matriz con tamaño 0
Sin embargo, tengo dos preguntas sobre este uso:
En primer lugar, se considera esto como una buena programación ¿práctica? Si es así, ¿cuándo deberíamos usarlo en el mundo real?
En segundo lugar, la matriz que definí fue bidimensional, con 0 tamaños para una dimensión. ¿Es esto lo mismo que el caso unidimensional? Por ejemplo,
int s[0]
int s[0][100]
int s[100][0]
¿Son todos iguales en la memoria y para el compilador?
EDITAR: Responder a Greg: El compilador que estoy utilizando es gcc 4.4.5. Mi intención para este problema no es dependiente del compilador, sin embargo, si hay algunas peculiaridades específicas del compilador que también serían útiles :)
¡Gracias de antemano!
Dado que ha hecho referencia al compilador en su pregunta, sería útil proporcionar información sobre el compilador particular que le preocupa. – Greg
Compruebe esto http://stackoverflow.com/questions/295027/array-of-zero-length – vasin
Tenga en cuenta que con C++ 11, el tipo 'std :: array' [puede tener un tamaño de 0] (http: //en.cppreference.com/w/cpp/container/array) (pero las matrices normales aún deben tener al menos un elemento). – Cameron