The ones who are crazy enough to think they can change the world are the ones who do.- Steve Jobs
A pointer variable containing the address of another pointer variable is known as pointer to pointer or a chain of pointers. The pointer variable that holds the address of another variable should be declared with additional asterisk (*).
int i = 5, *ptr; int **ptrptr; //declaration of pointer with additional asterisk ptr = &i; ptrptr = &ptr; //assigning a pointer variable address to pointer (ptrptr)
#include <stdio.h> int main() { int i = 5; int *ptr, **ptrptr; ptr = &i; ptrptr = &ptr; printf("The value of i = %d ", i); printf("\nThe value of ptr = %d ", *ptr); printf("\nThe value of ptrptr = %d ", **ptrptr); return 0; }
In the above program, ptr is declared as an integer pointer variable. The variable ptrptr is also declared as integer pointer variable to hold another pointer variable ptr.
#include <stdio.h> void function(char**); int main() { char *arr[] = { "ant", "bat", "cat", "dog", "egg", "fly" }; function(arr); return 0; } void function(char **ptr) { char *ptr1; ptr1 = (ptr += sizeof(int))[-2]; printf("%s\n", ptr1); }
Here function() gives the address of first value("ant") in an arr. This address is summationed by a sizeof(int) which is 4. Now the address in ptr points the value eggs, which is then reduced by 2. Now it points to the value cat which is finally displayed.
We may make mistakes(spelling, program bug, typing mistake and etc.), So we have this container to collect mistakes. We highly respect your findings.
© Copyright 2019