Can anyone help me to understand how to return multiple values using pointers in a function? I am confused with the following example.
- Can we assign other values to int value besides 0 or 1, while the program can still run normally? 
- What does defining the value of 0 and 1 in the if statement and else statement do for us in the int factor function? 
- What does if(!error) statement do in the main ()? 
#include <iostream>
using namespace std;
int factor(int n, int *p_addition, int *p_subtraction, int *p_squared, int *p_cubed)
{
    int value = 0;
    if (n >= 0 && n <= 100)
    {
        *p_addition = n + n;
        *p_subtraction = n - n;
        *p_squared = n*n;
        *p_cubed = n*n*n;
        value = 0;
    }
    else
    {
        value = 1;
    }
    // This function will return a value of 0 or 1
    return value;
}
int main()
{
    int number, num_add, num_sub, squared, cubed;
    int error;
    cout << "Enter a number between 0 and 100: ";
    cin >> number;
    error = factor(number, &num_add, &num_sub, &squared, &cubed);
    if (!error)
    {   
        cout << "number: " << number << endl;
        cout << "num_add: " << num_add << endl;
        cout << "num_sub: " << num_sub << endl;     
        cout << "squared: " << squared << endl;
        cout << "cubed: " << cubed << endl;
    }
    else
    {
        cout << "Error encountered!!" << endl;
    }
    return 0;
}
 
    