CS210 Lab: Recursion Prelab


These questions are designed to review two concepts:

Prelab Questions:

  1. Given the following piece of code, why aren't a and b exchanged after the call to exchange? (How could you modify the code?)
    void exchange(int, int);
    
    int main
    {
        int a=5,b=7;
       
        exchange(a,b);
    }
    
    void exchange (int x, int y)
    {
       int temp;
    
       temp = x;
       x = y;
       y = temp;
       return;
    } // end exchange
    		
  2. What is the difference between ClearPtr and ClearPtr2 in the following code? Will both pointer and pointer2 be set to 0 after the calls to ClearPtr and ClearPtr2. Why/Why not?
    #include<iostream>
    using namespace std;
    
    void ClearPtr(int *&p);
    void ClearPtr2(int *p2);
    
    int main()
    {
    	int x=5, x2=6;
    	int *pointer, *pointer2;
    	
    	pointer=&x;
    	pointer2=&x2;
    	
    	cout << "x is: " << *pointer << endl;
    	cout << "pointer is holding address: " << pointer << endl;
    	cout << endl;
    	cout << "x2 is: " << *pointer2 << endl;
    	cout << "pointer2 is holding address: " << pointer2 << endl;
    	cout << endl;
    
    	ClearPtr(pointer);
    	ClearPtr2(pointer2);
    
    	cout <<"pointer is holding address: " << pointer << endl;
    	cout <<"pointer2 is holding address: " << pointer2 << endl;
    	
    
    	return 0;
    }
    
    void ClearPtr(int *& p)
    {
    	p=0;
    }
    
    void ClearPtr2(int *p2)
    {
    	p2=0;
    }
    

For Answers, click here
Back to Recursion Lab click here
Copyright: Department of Computer Science, University of Regina.