# Using Output Parameters

suggest changeParameters can be used for returning one or more values; those parameters are required to be non-`const`

pointers or references.

References:

```
void calculate(int a, int b, int& c, int& d, int& e, int& f) {
c = a + b;
d = a - b;
e = a * b;
f = a / b;
}
```

Pointers:

```
void calculate(int a, int b, int* c, int* d, int* e, int* f) {
*c = a + b;
*d = a - b;
*e = a * b;
*f = a / b;
}
```

Some libraries or frameworks use an empty ‘OUT’ `#define`

to make it abundantly obvious which parameters are output parameters in the function signature. This has no functional impact, and will be compiled out, but makes the function signature a bit clearer;

```
#define OUT
void calculate(int a, int b, OUT int& c) {
c = a + b;
}
```

Found a mistake? Have a question or improvement idea?
Let me know.

Table Of Contents