Doesn't look like this thread has been active in awhile, but I'll put in my two cents concerning the general use of structs:

First, they are simply a way of holding realated data to carry out a category of tasks, with the type and name of the sturcture describing the purpose; COLOR, POSITION, etc.

Their are a number of benefits connected to the use of structs. They help organize your data and make your code more readable. Furthermore, they help with function argument passing in that, as opposed to passing a bunch of separate variables to a function, you can pass the a single struct* that contains all the needed items. The Windows API makes heavy use of this, where an API call requires the passing of a specific struct that may it might initialze. Then, other API calls would require the same struct to carry out further processing. Instead of having to examine a large number of separate variables, a structure that contains all the data needed for processing, can have its elements updated and can be examined or used for later processing.

So an advantage of using structs with functions is, you don't to worry about remembering the number of parameters to pass to a function, but only know the type of struct it requires. One could argue that this is alos more efficient, in that you are only pass a single struct*, as opposed to a handful of variables being placed on the call stack when the function is called.

Additionally, functions can only return one value, or left to manipulate global variables. By working with data in a struct, the function can return a single struct, or work with a global struct, to alter mulitple pieces of data, which minimizes the number of global variables and the possibility of name clashes; point.x and position.x will not overwrite one anothers values unexpectedly, thought both structs have an "x" element.

Not the best place to expound on the topic, but the post was here, so I have. : )