В вашем случае float d
определяет локальную переменную с автоматическим хранением, поэтому время жизни заканчивается возвратом функции.
Вам нужна переменная, которая остается активной на протяжении всего использования, попробуйте изменить определение переменной, чтобы она стала статическим хранилищем (у которого есть время жизни в программе), как
static float d;
Тогда возвращаемый указатель будет действителен и в вызывающем абоненте.
Тем не менее, у вас несоответствие типов
printf("The div is %f", pt);
должно быть
printf("The div is %f", *pt);
когда вы пытаетесь напечатать float
, а не float *
.