1// Test multiple levels of indirection
2
3void testsingle() {
4    int a = 0;
5    int* pa = &a;
6    printf("a = %d, *pa = %d\n", a, *pa);
7    *pa = 2;
8    printf("a = %d, *pa = %d\n", a, *pa);
9}
10
11void testdouble() {
12    int a = 0;
13    int* pa = &a;
14    int** ppa = &pa;
15    printf("a = %d, *pa = %d **ppa = %d\n", a, *pa, **ppa);
16    **ppa = 2;
17    printf("a = %d, *pa = %d **ppa = %d\n", a, *pa, **ppa);
18}
19
20void testtripple() {
21    int a = 0;
22    int* pa = &a;
23    int** ppa = &pa;
24    int*** pppa = &ppa;
25    printf("a = %d, *pa = %d **ppa = %d\n ***pppa = %d", a, *pa, **ppa, ***pppa);
26    ***pppa = 2;
27    printf("a = %d, *pa = %d **ppa = %d\n ***pppa = %d", a, *pa, **ppa, ***pppa);
28}
29
30int main() {
31    testsingle();
32    testdouble();
33    testdouble();
34    return 0;
35}
36