Week 2, Read pointer 2

#include <stdio.h>
#include <stdlib.h>

int f(int **r, **s){
int temp = **r;
int temp2 = **s;
int *z = *r;
*r = *s;
*s = z;
printf("**r = %d\n",**r);
printf("**s = %d\n",**s);
*z += 3;
**s -= 8;
**r -= 19;
return temp + temp2;
}

int main(void) {
int a = 80;
int b = 12;
int * p = &a;
int * q = &b;
int x = f(&p, &q);
printf("x = %d\n", x);
printf("*p = %d\n", *p);
printf("*q = %d\n", *q);
printf("a = %d\n", a);
printf("b = %d\n", b);
return EXIT_SUCCESS;
}

Output

**r = 12 **s = 80 x = 92 *p = -7 *q = 75 a = 75 b = -7

execute the code by hand and write the output.

**r = 12 **s = 80 x = 65 *p = 80 *q = 12 a = 80 b = 12

why return temp + temp2 = 12+80?the values change of below variables don’t affect it.

*z += 3; **s -= 8; **r -= 19;