Site icon Study Algorithms

Write a program to swap 2 numbers.

Question: Write a program to swap 2 numbers?

Input: a = 4, b = 19
Output: a = 19, b = 4

Swapping 2 numbers is one of the most basic tasks while programming. But sometimes, we tend to make error in it. For instance look at this code.

// function to swap 2 integers
void swapIntegers(int a, int b)
{
	// create a temporary variable and interchange the values
	int temp = a;
	a = b;
	b = temp;

    printf("\nI am inside function\n");
	printf("a = %d\n",a);
	printf("b = %d\n",b);
}

// driver program to test the above function
int main(void)
{
	int a = 4;
	int b = 15;
	
	// printing the values
	printf("a = %d\n",a);
	printf("b = %d\n",b);

    printf("\nI am calling the function\n");
	
	// calling the swap function
	swapIntegers(a,b);

    printf("\nI am out of the function\n");
	
	// printing the values
	printf("a = %d\n",a);
	printf("b = %d\n",b);
	
	return 0;
}

The output of the above program is:-

a = 4
b = 15

I am calling the function

I am inside function
a = 15
b = 4

I am out of the function
a = 4
b = 15

What happened? The values were changed inside the function but the changes did not reflect when returning. This is because when we call the function swapIntegers(int, int), only the value of the integers is passed. As the function finishes, their scope is lost.

To overcome this problem we need to pass the references of the values.

// function to swap 2 integers
void swapIntegers(int * a, int * b)
{
	// create a temporary variable and interchange the values
	int *temp = *a;
	*a = *b;
	*b = temp;
	
	printf("\nI am inside function\n");
	printf("a = %d\n",*a);
	printf("b = %d\n",*b);
}

// driver program to test the above function
int main(void)
{
	int a = 4;
	int b = 15;
	
	// printing the values
	printf("a = %d\n",a);
	printf("b = %d\n",b);

    printf("\nI am calling the function\n");
	
	// calling the swap function by passing reference
	swapIntegers(&a,&b);

    printf("\nI am out of the function\n");
	
	// printing the values
	printf("a = %d\n",a);
	printf("b = %d\n",b);
	
	return 0;
}

The output will now be:-

a = 4
b = 15

I am calling the function

I am inside function
a = 15
b = 4

I am out of the function
a = 15
b = 4

You can also check out all the different methods to swap 2 integers in this post.

Exit mobile version