Assume the following example:
uint8 myArr[4] = {0, 1, 2, 3};
uint8* ptr_a, ptr_b, ptr_c, ptr_test;
uint8** ptrptr_c;
void main(void)
{
ptr_a = &myArr[4]; // Address of myArr
ptr_b = myArr; // Address of myArr
ptr_c = &myArr; // --> Address of myArr again?! <---
ptrptr_c = &myArr; // --> Address of myArr again?! <--
ptr_test = &ptr_a // Address of ptr_a (whose content points to myArr)
}
That ptr_a and ptr_b contain the address of myArr is perfectly clear to me.
But I would've actually assumed, that ptr_c would contain some kind of address where the address of myArr is stored (analogue to ptr_test).
So, why does ptr_c (or ptrptr_c) contain the address of myArr ?