I have two functions: checkCollision feeds an array of SDL_Rect into actCollision, which checks and and changes the values based on certain criteria.
The program runs, but the function is not returning any data, and the "quit" function it points to, while working when not pointed to by the said function, causes the program to crash rather then cleanly close.
Are you talking about the stop() function? You should probably not be calling that function deep within your program like that. Instead set quit to true and the stop function will get called after the main loop.
First of all you should make sure that all the functions that has a return type other than void actually returns a value. If you don't want a function to return anything you should change the return type to void.
The problem with actCollision is that defenderType is a copy of the argument you passed to the function so any changes made to defenderType will not affect the variable you passed as argument.