¿Cuál será el tamaño de la siguiente estructura?
CPP
struct employee { int emp_id; int name_len; char name[0]; };
4 + 4 + 0 = 8 bytes.
¿Y qué pasa con el tamaño de «nombre [0]». En gcc, cuando creamos una array de longitud cero, se considera una array de tipo incompleto, por lo que gcc informa su tamaño como «0» bytes. Esta técnica se conoce como “Struct Hack”. Cuando creamos una array de longitud cero dentro de la estructura, debe ser (y solo) el último miembro de la estructura. En breve veremos cómo usarlo.
La técnica «Struct Hack» se utiliza para crear miembros de longitud variable en una estructura. En la estructura anterior, la longitud de la string de «nombre» no es fija, por lo que podemos usar «nombre» como array de longitud variable.
Veamos a continuación la asignación de memoria.
CPP
struct employee { int emp_id; int name_len; char name[128]; /* character array of size 128 */ };
CPP
struct employee { int emp_id; int name_len; char name[1024]; /* character array of size 1024 */ };
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA