Return types, pass by reference vs pass by value (#20261)

Expanded on what data types can be returned. Also added section for the differences between passing an object as a parameter by value versus by reference.
pull/31507/head
Yves Wienecke 2018-10-28 18:27:41 -07:00 committed by Tom
parent 5cc2757e32
commit a3b20c0652
1 changed files with 39 additions and 1 deletions

View File

@ -19,7 +19,15 @@ return_type function_name( parameter list )
```
### Return type:
A function may return a value. The `return_type` is the data type of the value the function returns. Some functions perform the desired operations without returning a value. In this case, the `return_type` is the keyword `void`, but the [return type of main() must always be int](https://stackoverflow.com/a/4207223/).
A function may return a value. The `return_type` is the data type of the value the function returns. Some functions perform the desired operations without returning a value. In this case, the `return_type` is the keyword `void`, but the [return type of main() must always be int](https://stackoverflow.com/a/4207223/). In C++, the return type of a function can be any primitive data type, a reference to an object, or a pointer to an object.
```cpp
int func1(); // Returns a primitive data type
char & func2(); // Returns a reference to an object (Careful not to return a obeject local to the function)
float * func3(); // Returns a pointers to a float
struct node{};
node * func4(); // Returns a pointer to a user defined data type
```
### Function name:
This is the actual name of the function. The function name and the parameter list together constitute the function signature.
@ -27,6 +35,36 @@ This is the actual name of the function. The function name and the parameter lis
### Parameters:
A parameter is like a placeholder. When a function is invoked, you pass a value to the parameter. This value is referred to as actual parameter or argument. The parameter list refers to the type, order, and number of the parameters of a function. Parameters are optional; that is, a function may contain no parameters.
The parameters of a function are passed by value unless explicitly specified by the programmer. This means that the program will create a temporary copy of the arguments, and any changes made to those copies from within the function will not remain once the function returns.
The address of operator, `&`, allows the programmer to pass in a parameter by reference. When the function is invoked, the program will not create a copy of the parameter, and any changes made from within the function will remain once the function returns.
```cpp
// Function prototypes
void increment_by_value (int a);
void increment_by_reference (int & a);
int main() {
int number = 0;
// Invoking functions
increment_by_value(number); // The value of number stays at 0
increment_by_reference(number); // The value of number changes to 1
return 1;
}
// Function definitions
void increment_by_value (int a) {
a = a + 1;
return;
}
void increment_by_reference (int & a) {
a = a + 1;
return;
}
```
### Function body:
The function body contains a collection of statements that define what the function does.