pointer.py 505 B

123456789101112131415161718192021222324252627282930313233343536
  1. a = 1
  2. assert a == 1
  3. assert *&a == 1
  4. b = &a
  5. *b = 2
  6. assert a == 2
  7. def swap(a,b):
  8. t = *a
  9. *a = *b
  10. *b = t
  11. def f():
  12. a,b = 5,6
  13. swap(&a,&b)
  14. assert a == 6
  15. assert b == 5
  16. f()
  17. a = [1, 2, 3]
  18. b = &a
  19. b->append(4)
  20. assert a == [1, 2, 3, 4]
  21. def add(a, b):
  22. return a+b
  23. p = &add
  24. assert p->__call__(1, 2) == 3
  25. assert p->__call__.__call__.__call__.__call__.__call__(3, 4) == 7
  26. fun = lambda :6
  27. p = &fun
  28. assert p->__call__() == 6
  29. assert p->__call__.__call__.__call__.__call__.__call__() == 6