1. #include <stdio.h>
    2. #include <stdlib.h>
    3. void
    4. f(void)
    5. {
    6. int a[4];
    7. int *b = malloc(16);
    8. int *c;
    9. int i;
    10. printf("1: a = %p, b = %p, c = %p\n", a, b, c);
    11. c = a;
    12. for (i = 0; i < 4; i++)
    13. a[i] = 100 + i;
    14. c[0] = 200;
    15. printf("2: a[0] = %d, a[1] = %d, a[2] = %d, a[3] = %d\n",
    16. a[0], a[1], a[2], a[3]);
    17. c[1] = 300;
    18. *(c + 2) = 301;
    19. 3[c] = 302;
    20. printf("3: a[0] = %d, a[1] = %d, a[2] = %d, a[3] = %d\n",
    21. a[0], a[1], a[2], a[3]);
    22. c = c + 1;
    23. *c = 400;
    24. printf("4: a[0] = %d, a[1] = %d, a[2] = %d, a[3] = %d\n",
    25. a[0], a[1], a[2], a[3]);
    26. c = (int *) ((char *) c + 1);
    27. *c = 500;
    28. printf("5: a[0] = %d, a[1] = %d, a[2] = %d, a[3] = %d\n",
    29. a[0], a[1], a[2], a[3]);
    30. b = (int *) a + 1;
    31. c = (int *) ((char *) a + 1);
    32. printf("6: a = %p, b = %p, c = %p\n", a, b, c);
    33. }
    34. int
    35. main(int ac, char **av)
    36. {
    37. f();
    38. return 0;
    39. }

    l-c-slides.pdf
    gdb_slides.pdf