¿Por qué scanf()necesita el l" %lf" cuando lee un double, cuándo printf()puede usar " %f" independientemente de si su argumento es a doubleo a float?
Código de ejemplo:
double d;
scanf("%lf", &d);
printf("%f", d);
&operador unario , el resultado de esa operación es un puntero a la ubicación de almacenamiento de la variable en la memoria. Es ese puntero al que se pasa scanf.