// ** is call a double pointer
// ** is just a pointer to a pointer
char **p1;
char **p2;
// This is an array of characters( char ).
// an arrays first address is considered a pointer.
// thats why you use a double pointer.
char *tables[5] = {"A","B","C","D","E"};
// Point to the beginning of the table array to store the start of the array
// addresses. This stores the array address not the array value.
p1 = table;
// This is pointing to the last adderess of the array.
p2 = table[5];
//to get the values from p1 nd p2
printf("this is the value of p1 %s
", *p1);
printf("this is the value of p2 %s
", *p2);
// Hope this helped!
// Happy coding!!
Modulus AND assignment operator. It takes modulus using two operands and assigns the result to the left operand.
int i = 10; //i is an int, it has allocated storage to store an int.
int *k; // k is an uninitialized pointer to an int.
//It does not store an int, but a pointer to one.
k = &i; // make k point to i. We take the address of i and store it in k
int j = *k; //here we dereference the k pointer to get at the int value it points
//to. As it points to i, *k will get the value 10 and store it in j