Der Code hat mehrere Probleme mit Typen und führt zu undefiniertem Verhalten. test() ist so deklariert
void test(float *val)
Du rufst es aber auf mit
float *f;
test(&f);
f ist ein float*, also ist &f ein float** (Pointer auf Pointer). Das passt nicht zu float*. In test() steht
val = 1.1f;
val ist ein Pointer (float *), 1.1f ist ein Float. Hier musst du den Pointer dereferenzieren.
*val = 1.1f;
Alles zusammen:
void test(float *val)
{
*val = 1.1f;
}
int main(int argc, char **argv)
{
float f;
test(&f);
printf("%f", f);
return 0;
}