The distinction is meaningless in the land of Opcode’s and memory addresses
For example, a struct is just an imaginary “overlay” on top of a contiguous section of memory
Say you have a struct
struct Thing {
int a;
int b;
Thing* child;
}
Thing foo {}
You could easily get a reference to foo->child->b
by doing pointer arithmetic
*((*((*foo) + size(int)*2)) +size(int))
(I’ve not used C much so I’ve probably got the syntax wrong)
I’m more talking about theory than practical.
I’ve not developed anything in C/C++, so I don’t know practical uses for a double pointer, aside from multidimensional arrays, or arrays of pointers
My point was that, conceptually, pointers to pointers is how most complex data structures work. Even if the C representation of said code doesn’t have a
int**
somewhere