It tried what you suggested, but it doesn't work.
It still said the floating point doesn't linked for
scanf("%f", &rec[0]->mark);
but it works fine for
scanf("%s", &rec[0]->name);
This is so strange. Huh!
This is more than strange it is wrong. Here are some of your errors
1. You declare Rec * rec[10]; then you start accesing the members pointed to by rec[0] without allocating any memory to that pointer. As soon as you do this you invoke undefined behaviour. Once undefined behaviour has been invoked anywhere in your code all bets are off. The code may work as expected or it may crash or it may perform some completely unexpected behaviour.
Don't do it.
2. You have to pass pointers to basic types to scanf to the locations to write data back to so
scanf("%f", rec[0]->mark);
rec[0]->mark is not a pointer it is a float, this wont work
scanf("%s", &rec[0]->name);
rec[0]->name is already a pointer, &rec[0]->name is a pointer to a pointer to char (char **), scanf does not understand this, it wont work
These are the working version of these lines
scanf("%f", &rec[0]->mark);
scanf("%s", rec[0]->name);
3. I very much doubt it said "floating point doesn't linked", most compilers manage to use resonable English which this isn't. If you are getting an error post the actual error not your interpretation of it.