procedure leerBlq (numBloque: int, var buff: bloque) : boolean
type bloque = array [0..4095] of byte;
var buff = [0..127] of entradaDir;
procedure leerBlq (numBloque: int, var buff: bloque) : boolean
type bloque = array [0..4095] of byte;
var buff = [0..127] of entradaDir;
Estimado,'
Sí, lo permitimos. La idea que subyace es que los sectores del disco son arreglos de bytes, que uno los interpreta. Un arreglo de 4096 bytes lo podés interpretar como 4096 chars, o como 2048 shorts (int de 16 bits), o en este caso, como 128 estructuras de 32 bytes cada una.
Ahora, el casteo de arreglo a arreglo no compila en C. Para que compile, habría que castear las referencias (de entradaDir* a byte*), porque eso es bastante inocuo. En ese caso el valor de la variable no cambia, el compilador simplemente registra 'lo que está a partir de esta dirección de memoria, a partir de ahora se interpreta como byte en lugar de entradaDir'. Pero bueno, permitimos usar tipos estáticos porque es más entendible, y asumimos que funciona de la forma en que funciona el casteo de punteros.
Saludos,
Federico