It looks as if you're making a cast into a function, or achieving a cast via a function.
The compiler is correct that x is not initialized, so assigning to *x leads to undefined behaviour (and the compiler warning you are getting). This code might be what you want:
const float *program(const int *k)
{
const float *x = (float *)k;
return x;
}
You need the cast — unless you are compiling with way, way, way too many warnings disabled. Note that this is still giving you undefined behaviour, but it is a somewhat different form of undefined behaviour — with most systems, this code will reinterpret the int pointer as a float pointer and you'll get more or less sane results. With the uninitialized variable, you simply cannot tell what will happen; it is much worse to dereference an uninitialized pointer.