c struct sizeof

¿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.