Pointers
#include <stdio.h>
void swap(int *, int *);
int main(void)
{
int one = 11, two = 22;
int *ptr1, *ptr2;
ptr1 = &one;
ptr2 = &two;
printf("\nInitial values");
printf("\nAddress of one = %x two = %x ptr1 = %x ptr2 = %x\n",
&one, &two, &ptr1, &ptr2);
printf("Value of one = %d two = %d ptr1 = %x ptr2 = %x\n",
one, two, ptr1, ptr2);
printf("Value of *ptr1 = %d *ptr2 = %d", *ptr1, *ptr2);
swap(&one, &two);
printf("\nAfter swapping one and two");
printf("\nAddress of one = %x two = %x ptr1 = %x ptr2 = %x\n",
&one, &two, &ptr1, &ptr2);
printf("Value of one = %d two = %d ptr1 = %x ptr2 = %x\n",
one, two, ptr1, ptr2);
printf("Value of *ptr1 = %d *ptr2 = %d\n", *ptr1, *ptr2);
swap(ptr1, ptr2);
printf("After swapping ptr1 and ptr2");
printf("\nAddress of one = %x two = %x ptr1 = %x ptr2 = %x\n",
&one, &two, &ptr1, &ptr2);
printf("Value of one = %d two = %d ptr1 = %x ptr2 = %x\n",
one, two, ptr1, ptr2);
printf("Value of *ptr1 = %d *ptr2 = %d\n", *ptr1, *ptr2);
return (0);
}
void swap(int *one, int *two)
{
int temp = 0;
printf("\nAt start of swap ");
printf("\nAddress of one %x two %x temp %x ",
&one, &two, &temp);
printf("\nValue of one %x two %x temp %d ",
one, two, temp);
printf("\nValue of *one %d *two %d ", *one, *two);
temp = *one;
*one = *two;
*two = temp;
printf("\nAt end of swap ");
printf("\nAddress of one %x two %x temp %x ",
&one, &two, &temp);
printf("\nValue of one %x two %x temp %d ",
one, two, temp);
printf("\nValue of *one %d *two %d ", *one, *two);
}
Initial values
Address of one = 1ffff128 two = 1ffff120 ptr1 = 1ffff118 ptr2 = 1ffff110
Value of one = 11 two = 22 ptr1 = 1ffff128 ptr2 = 1ffff120
Value of *ptr1 = 11 *ptr2 = 22
At start of swap
Address of one 1ffff0f0 two 1ffff0e8 temp 1ffff0e0
Value of one 1ffff128 two 1ffff120 temp 0
Value of *one 11 *two 22
At end of swap
Address of one 1ffff0f0 two 1ffff0e8 temp 1ffff0e0
Value of one 1ffff128 two 1ffff120 temp 11
Value of *one 22 *two 11
After swapping one and two
Address of one = 1ffff128 two = 1ffff120 ptr1 = 1ffff118 ptr2 = 1ffff110
Value of one = 22 two = 11 ptr1 = 1ffff128 ptr2 = 1ffff120
Value of *ptr1 = 22 *ptr2 = 11
At start of swap
Address of one 1ffff0f0 two 1ffff0e8 temp 1ffff0e0
Value of one 1ffff128 two 1ffff120 temp 0
Value of *one 22 *two 11
At end of swap
Address of one 1ffff0f0 two 1ffff0e8 temp 1ffff0e0
Value of one 1ffff128 two 1ffff120 temp 22
Value of *one 11 *two 22
After swapping ptr1 and ptr2
Address of one = 1ffff128 two = 1ffff120 ptr1 = 1ffff118 ptr2 = 1ffff110
Value of one = 11 two = 22 ptr1 = 1ffff128 ptr2 = 1ffff120
Value of *ptr1 = 11 *ptr2 = 22