I am confused on how the code below can be sent a variable and then change that variable to the value at the top of the stack without “returning” a value. So if 1 was at the top I could do stack.pop(variable) and then variable would equal 1.
void DynIntStack::pop(int &num)
{
StackNode *temp; // Temporary pointer
// First make sure the stack isn't empty.
if (isEmpty())
{
cout << "The stack is empty.\n";
}
else // pop value off top of stack
{
num = top->value;
temp = top->next;
delete top;
top = temp;
}
}
This is a parameter passed by reference.
You can think of it as passing the actual parameter, not just the value. Any modification done to the parameter is reflected to the original variable just because they are the same variable.
Actually the parameter is a reference (pointer) to the memory address of the real value.