¿Qué significa struct_type[1]?
sizeof (3)
Encontré un código que obtiene el tamaño de struct de esta manera:
sizeof(struct struct_type[1]);
struct_type
y devuelve el tamaño de struct_type
.
Y
sizeof(struct struct_type[2]);
devuelve dos veces el tamaño de la estructura.
Editar:
struct_type
es una estructura, no una matriz:
struct struct_type {
int a;
int b;
};
¿Qué significa struct_type[1]
realidad?
Al igual que:
sizeof(int[1]); // will return the size of 1 int
y
sizeof(int[2]); // will return the size of 2 ints
También lo hace:
sizeof(struct struct_type[1]); // return size of 1 `struct struct_type''
y
sizeof(struct struct_type[2]); // return size of 2 `struct struct_type''
Aquí struct struct_type[1]
, y struct struct_type[2]
simplemente representan arrays
de elementos de tipo struct struct_type
, y sizeof
of simplemente devuelve el tamaño de esas matrices representadas.
Para la declaración
int arr[10];
El tamaño de la matriz se puede calcular utilizando arr
como operando o int [10]
. Dado que el operador sizeof
produce el tamaño en función del tipo de operando, tanto sizeof(arr)
como sizeof (int [10])
devolverán el tamaño de array arr
(en última instancia, arr
es de tipo int [10]
).
C11-§6.5.3.3 / 2:
El operador sizeof produce el tamaño (en bytes) de su operando, que puede ser una expresión o el nombre entre paréntesis de un tipo. El tamaño se determina a partir del tipo de operando . El resultado es un entero. Si el tipo del operando es un tipo de matriz de longitud variable, se evalúa el operando; de lo contrario, el operando no se evalúa y el resultado es una constante entera.
Del mismo modo, para una matriz de struct struct_type
struct struct_type a[1];
el tamaño puede calcularse mediante sizeof (a)
o sizeof(struct struct_type[1])
.
Recuerde la sintaxis sizeof
:
sizeof ( typename );
Aquí typename es struct struct_type[N]
o en una forma más legible struct struct_type [N]
que es una matriz de N objetos de tipo struct struct_type. Como sabes, el tamaño de la matriz es el tamaño de un elemento multiplicado por la cantidad total de elementos.