Hay cuatro direcciones de memoria (punteros float **) reservadas con la primera linea del codigo
y si quiero crear en forma dinámica 4 punteros a punteros?
para nada, eso no es lo que existe ahi.El puntero NO es las 4 posiciones de memoria, el puntero (float**) esta localizado en una posición memoria X y el contenido en esa posición de memoria es la dirección de la 'primera ' posición de memoria de 4 reservadas.
Si yo reservo 16 bytes tengo cuatro direcciones de memoria, aunque no te lo creas y puedo hacer que esas apunten a cuatro nuevas direcciones de memoria que me de malloc y esas direcciones ocupan el tamaño de un float. Por lo tanto son punteros a punteros.
pero tu nunca has mostrado que esas 4 apunten a 4 nuevas direcciones de memoria, eso es lo que he mostrado yo.
Lo que tu citas es un puntero a 4 punteros, no 4 punteros a punteros, float f;<- variable (que obviamente es una dirección de memoria donde se contiene el float)float* fp;<- puntero a float, una variable que contiene una direccion de memoria, de ahi que para 'mover el puntero' se pueda hacer fp++ lo cual es aumentar el valor contenido en uno, o sea desplazarce una posicion en la direccion de memoria apuntada float** fpp;-> puntero a puntero float, pero es solo un puntero que puede direccionar 4 posiciones de memoria reservadas.Un reflexion adicional:si tengoCódigo: Textchar *c; c = (char*)malloc(10); esta claro que c contiene la direccion de memoria del bloque creado con malloc, pero ese bloque no es un 'bloque de punteros' es un 'bloque de caracteres'.entoncesCódigo: Textchar** z;z = (char**)malloc(10 * sizeof(char*)); z tiene la dirección de un 'bloque de 10 punteros' , o sea z es un puntero a 'un bloque de 10 punteros'... estos a su vez pueden apuntar a '10 bloques de caracteres' cada uno.así que tenemos solo un puntero apuntado 4punteros más.En conclusión z es puntero a puntero... solo 1 no 10.
Según he tradtado de en entenderel punto de vista de Eternal Idol es que dado que float pes una variable y toda variable es una direccion de memoria, el hecho de tenerfloat f= 2.0f;float *pf= &f;implica que pf este apuntando a f y que como f es otra dirección de memoria entonces pf es un puntero a un puntero, cosa que no estoy de acuerdo.