#include <stdio.h>
void print(int arr[]) {
printf("arr: ");
for (int i = 0; i < 6; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main () {
int arr[] = { 18, 30, 12, 3, 33, 27 };
print(arr);
int *p = arr;
int **pp = &p;
int ***ppp = &pp;
int ****pppp = &ppp;
printf("arr = %p\n", arr);
printf("p = %p\n", p);
printf("*pp = %p\n", *pp);
printf("**ppp = %p\n", **ppp);
printf("***pppp = %p\n\n", ***pppp);
printf("arr[0] = %d\n", arr[0]);
printf("p[0] = %d\n", p[0]);
printf("*pp[0] = %d\n", *pp[0]);
printf("**ppp[0] = %d\n", **ppp[0]);
printf("***pppp[0] = %d\n\n", ***pppp[0]);
printf("arr[0] = %d\n", arr[0]);
printf("*p = %d\n", *p);
printf("**pp = %d\n", **pp);
printf("***ppp = %d\n", ***ppp);
printf("****pppp = %d\n\n", ****pppp);
printf("arr[1] = %d\n", arr[1]);
printf("*(p + 1) = %d\n", *(p + 1));
printf("*(*pp + 1) = %d\n", *(*pp + 1));
printf("*(**ppp + 1) = %d\n", *(**ppp + 1));
printf("*(***pppp + 1) = %d\n\n", *(***pppp + 1));
arr[2] = 700;
print(arr);
printf("arr[2] = %d\n\n", arr[2]);
*(p + 2) = 200;
print(arr);
printf("arr[2] = %d\n", arr[2]);
printf("*(p + 2) = %d\n\n", *(p + 2));
*(*pp + 2) = 400;
print(arr);
printf("arr[2 = %d\n", arr[2]);
printf("*(*pp + 2) = %d\n\n", *(*pp + 2));
*(**ppp + 2) = 500;
print(arr);
printf("arr[2] = %d\n", arr[2]);
printf("*(**ppp + 2) = %d\n\n", *(**ppp + 2));
*(***pppp + 2) = 900;
print(arr);
printf("arr[2] = %d\n", arr[2]);
printf("*(***pppp + 2) = %d\n", *(***pppp + 2));
return 0;
}
/*
run:
arr: 18 30 12 3 33 27
arr = 0x7ffd68e7a4d0
p = 0x7ffd68e7a4d0
*pp = 0x7ffd68e7a4d0
**ppp = 0x7ffd68e7a4d0
***pppp = 0x7ffd68e7a4d0
arr[0] = 18
p[0] = 18
*pp[0] = 18
**ppp[0] = 18
***pppp[0] = 18
arr[0] = 18
*p = 18
**pp = 18
***ppp = 18
****pppp = 18
arr[1] = 30
*(p + 1) = 30
*(*pp + 1) = 30
*(**ppp + 1) = 30
*(***pppp + 1) = 30
arr: 18 30 700 3 33 27
arr[2] = 700
arr: 18 30 200 3 33 27
arr[2] = 200
*(p + 2) = 200
arr: 18 30 400 3 33 27
arr[2 = 400
*(*pp + 2) = 400
arr: 18 30 500 3 33 27
arr[2] = 500
*(**ppp + 2) = 500
arr: 18 30 900 3 33 27
arr[2] = 900
*(***pppp + 2) = 900
*/