No, no entiendo que queres explicar y sospecho que no leiste el enlace que deje sobre el operador de desreferencia. Si la variable no fuera un puntero (char bloque) no la podrias desreferenciar ... y como no es un doble puntero no la podes desrefenciar dos veces.
si lo lei
y entiendo el funcionamiento de los operadores de desferencia (quizas no tan bien como otros), pero a lo que yo me referia es:
Si se declara char *bloque; y luego una funcion necesita que se le pase un puntero:
read(bloque)
Hasta aqui bien no?
Pero si le pasamos por error read(*bloque), teniendo char *bloque... no seria lo mismo que tener char **bloque y pasarle read(bloque)