====== Pointer to pointer ======
/* pointer to pointer */
#include
int main()
{
int a = 5;
int *p0 = &a;
int **p1 = &p0;
int ***p2 = &p1;
int ****p3 = &p2;
int *****p4 = &p3;
printf("address of a is: %p and p0 value is: %p\n", &a, p0);
printf("address of p0 is: %p and p1 value is: %p\n", &p0, p1);
printf("address of p1 is: %p and p2 value is: %p\n", &p1, p2);
printf("address of p2 is: %p and p3 value is: %p\n", &p2, p3);
printf("address of p3 is: %p and p4 value is: %p\n", &p3, p4);
printf("value of a is: %d\n", a);
printf("accessing value of a with p4: %d\n", *****p4);
return 0;
}
/* pointer to pointer */
#include
int main()
{
int x = 5;
int *p = &x;
int **q = &p;
int ***r = &q;
printf("----------------------------------------\n");
printf("variable \t| x, *p , **q, ***r \t| p, *q, **r \t| q, *r \t| r |\n");
printf("value \t| %18d \t| %018p \t| %018p \t| %018p |\n", x, p, q, r);
printf("address \t| %018p \t| %018p \t| %018p \t| %018p |\n", &x, &p, &q, &r);
printf("\n");
printf("\t\t x = %d\t\t p = %p\t q = %p\t r = %p\n", x, p, q, r);
printf("\t\t *p = %d\t\t *q = %p\t *r = %p\n", *p, *q, *r);
printf("\t\t **q = %d\t\t **r = %p\n", **q, **r);
printf("\t\t ***r = %d\t\n ", ***r);
printf("----------------------------------------\n");
return 0;
}
/* pointer to pointer */
#include
int main()
{
int x = 5;
int *p = &x;
int **q = &p;
int ***r = &q;
printf("int x = 5;\n");
printf("int *p = &x;\n");
printf("int **q = &p;\n");
printf("int ***r = &q;\n");
printf("\n&x = %018p, &p = %018p, &q= %018p, &r = %018p\n\n", &x, &p, &q, &r);
printf("x = %-18d \t\t *p = %-18d \t\t **q = %-18d \t\t ***r = %-18d \n", x, *p, **q, ***r);
printf("p = %018p \t\t *q = %018p \t\t **r = %018p \n", p, *q, **r);
printf("q = %018p \t\t *r = %018p \n", q, *r);
printf("r = %018p \n", r);
return 0;
}