1) memset is fine as long as your struct is a POD struct. As soon as you add a complex type (like a string) memset will cause your program to explode. Since this isn't "future proof" I would recommend against it (you might want to add a string later -- and if you do you'll have to go back and change all the memsets in your program)
2) ZeroMemory is just a macro that calls memset. They're exactly the same.
3) A combination of Mooce's #1 suggestion and Xander's suggestion is what I recommend. Write a function that resets/zeros the struct, then make a default ctor that calls that function.
4) Mooce's #2 suggestion is also good if applicable. Although I would still put the resetting in a function.
There is no need to do "Assignment1 = LotsaFloats(); "
The moment the variable Assignment1 is created, it is going to call the constructor, which is going to set all the values to zero as specified in the constructor.