Yes. Procedures are otherwise known as functions, and functions can accept arguments.
C
You can't pass an enum as an argument to a function. An enum in C isn't an object, it's a type. All you can do is pass a variable that is of the particular enum's type.
Yes.
yes.
parameter
The same way you pass any other argument. int[] integerArray = new int[] {5,4,3,2,1}; // Pass our integerArray to the Arrays.sort method Arrays.sort(integerArray);
You pass arguments to functions because that is how you tell the function what you want it to do. If you had, for instance, a function that calculated the square root of something, you would pass that something as an argument, such as a = sqrt (b). In this case sqrt is the function name, b is passed as its argument, and the return value is assigned to a.
Pass by value.
The warning Illegal Argument Exception in Java means that one has attempted to pass a wrong type of argument for a function. For example, we have a function that calculates a sum of two numbers and feed it a text string, which results in Illegal Argument Exception.
Pass by value is a semantic that describes the way in which the actual argument in the calling code is assigned to the corresponding formal argument of the function being called. In pass by value, the actual argument and the corresponding formal argument are independent of each other; changing the value of the formal argument has no effect whatsoever upon the actual argument's value. In other words, the function receives a copy of the actual argument's value, never the actual argument itself. In C, all arguments are passed by value. However, when the formal argument is declared a pointer, we are effectively declaring a pass by reference semantic. The formal and actual arguments are still independent of each other (the formal argument's pointer value can still be changed without affecting the actual argument's pointer value), but if the formal argument and the actual argument both refer to the same object, changing that object's value via the function changes the same value in the caller. Pass by reference is useful when the value being passed is large or complex and cannot be implicitly or easily copied, such as an array or data structure. Pass by reference can also be used to return a value to the caller via an "output parameter", thus allowing a function to return more than one value. [Object-oriented programmers will detest the use of output parameters, citing bad programming practice (or poor style), but in C, it is not only desirable to use them to maintain efficiency, it is largely unavoidable. Object-oriented languages have highly efficient move constructors and move assignment operators, but C does not and copying large structures unnecessarily is detrimental to performance.]
Strictly speaking, no. All arguments in C are passed by value. However, when the argument being passed is a memory address, although the address itself is passed by value, we're effectively passing the object that resides at that address -- by reference. Thus when a function's formal argument is a pointer variable (of any type), then it can be taken as read that the function is using the pass by reference semantic rather than the pass by value semantic. Nevertheless, it is important to keep in mind that the formal argument is assigned a copy of the actual argument and is therefore being passed by value.
pass by value is the technique where a copy of the variable is passed to the method as argument. This value can be modified inside the method but that would not affect the original value. Pass by reference is the technique where the reference to the actual variable is passed to the method as argument. Any changes to this variable would affect and alter the original value. Usually primitive data types are passed by value and objects are passed by reference in java.