Quote Originally Posted by spadez
First thing, int main(). From what i understand this line is used to define if there are any command line arguments for the program. Is that its only job? Why is it always int, what about if there are letters in the arguments, would it be char main()? If there are no arguments, would it really matter what is put at the start (int, float etc)?
int is the return type, and the main function must be defined with that return type (with an exception that you need not be concerned with at the moment). You might want to read the tutorial on command line arguments.

Quote Originally Posted by spadez
Secondly, when using scanf, im having a hard time understanding why a & sign is used before the variable. It seems to work without it, is it bad practice?
You need to understand a little on pointers to understand why this is so. Whether to use the address of operator depends on context. I suggest that you read the tutorial on pointers.

Quote Originally Posted by spadez
Finally with the functions, why is the function defined as a prototype above with pretty much the same information inlcuded in the actual function, for example:

int mult ( int x, int y );

Is this really nessesary or is it justgood coding practice?
It is not necessary since you can declare the function as having an unknown number of parameters, but that is generally bad practice.