what are the different types of arguments in functions