fork download
  1. #include <stdio.h>
  2.  
  3. void swapA (int a, int b) {
  4. printf(" start A: a: %d b: %d\n", a, b);
  5. int c = a;
  6. a = b;
  7. b = c;
  8. printf(" end A: a: %d b: %d\n", a, b);
  9. }
  10.  
  11. void swapB(int* a, int* b) {
  12. printf(" start B: a: %d b: %d\n", *a, *b);
  13. int temp = *a;
  14. *a = *b;
  15. *b = temp;
  16. printf(" end B: a: %d b: %d\n", *a, *b);
  17. }
  18.  
  19. int main(void) {
  20. int foo = 42;
  21. int bar = 4;
  22.  
  23. swapA(foo, bar);
  24. printf("after A: foo: %d bar: %d\n", foo, bar);
  25. /* why didn't anything change? */
  26.  
  27. swapB(&foo, &bar);
  28. printf("after B: foo: %d bar: %d\n", foo, bar);
  29. /* what was different? */
  30. return 0;
  31. }
  32.  
Success #stdin #stdout 0s 2292KB
stdin
Standard input is empty
stdout
  start A: a: 42 b: 4
    end A: a: 4 b: 42
after A: foo: 42 bar: 4
  start B: a: 42 b: 4
    end B: a: 4 b: 42
after B: foo: 4 bar: 42