Hola Reignerok,<br><br>
<div class="gmail_quote">2010/4/27 Reignerok <span dir="ltr"><<a href="mailto:reignerok@gmail.com">reignerok@gmail.com</a>></span><br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">Entonces, si he entendido bien, no es efectivo, desde el punto de vista del uso de memoria, agrupar en registros campos que ocupen mucho con otros que ocupen poco, ¿no? Y la típica estructura array/variable en el que la variable contiene los elementos usados del array sería bastante poco efectiva, ¿verdad? 
<div> </div></blockquote>
<div> </div>
<div>Ciertamente, la estructura puede derrochar memoria, pero no suele ser una gran pérdida. Lo normal es que algunos bytes se queden en desuso. Podrías reorganizar los campos de la estructura para optimizarla. Por ejemplo,</div>

<div> </div>
<div>struct A</div>
<div>{</div>
<div>  char c;</div>
<div>  int num;</div>
<div>  char cc;</div>
<div>  short int si;</div>
<div>  int num2;</div>
<div>};</div>
<div> </div>
<div>Esta estructura ocuparía 16 bytes, cuando el cómputo por campo es 12 bytes.</div>
<div> </div>
<div>Si colocamos los campos estratégicamente, es posible que nos acerquemos al tamaño óptimo. Por ejemplo,</div>
<div> </div>
<div>
<div>struct A</div>
<div>{</div>
<div>  char c;</div>
<div>  char cc;</div>
<div>  short int si;</div>
<div>
<div>  int num;</div>  int num2;</div>
<div>};</div></div>
<div> </div>
<div>Aquí la estructura 'A' sí ocupa 12 bytes, que es justo el tamaño por campo.</div>
<div> </div>
<div>En cuanto a la otra pregunta, si te refieres a un array de estructuras, entonces posiblemente ese derroche por estructura agrave el derroche del array.</div>
<div> </div>
<div>Si te refieres a una estructura de arrays, entonces debes tener cuidado. Aunque se trate de un array, realmente tenemos varios elementos de un solo tipo. Esto es, tenemos varios bloques accesibles a través de un solo campo: el array en sí. Ahora bien, para el cálculo del tamaño de la estructura, el array no es considerado como un solo tipo de dato, sino como un tipo compuesto de elementos agrupados. Por ejemplo,</div>

<div> </div>
<div>struct B</div>
<div>{</div>
<div>  char c;</div>
<div>  int num;</div>
<div>  short int lista[11];</div>
<div>};</div>
<div> </div>
<div>La estructura ocuparía 20 bytes, cuando por campos el tamaño es de 16 bytes. Nuevamente, si reescribimos los campos estratégicamente, podemos obtener este tamaño "correcto"; por ejemplo,</div>
<div> </div>
<div>
<div>struct B</div>
<div>{</div>
<div>  char c;</div>
<div>  short int lista[11];</div>
<div>
<div>  int num;</div>};</div></div>
<div> </div>
<div> </div>
<div>Espero haber aclarado las dudas.</div>
<div> </div>
<div>Steven</div>
<div> </div></div>