float *pip = 3.141;
pip
is a pointer, a pointer must be initialized with an address (not with a value)
e.g:
float f[] = {0.1f, 0.2f, 3.14f};
float *pip = &f[2];
printf("%f\n", *pip);
EDIT:
Another one:
int *p = malloc(sizeof(int)); /* allocates space */
*p = 2; /* Now you can use it */
printf("%p %d\n", (void *)p, *p);
free(p);