Yes, you can do crazy shit if you try hard enough, but every reasonable programmer would access foo->child->b als foo->child->b and not via that crazy LISPy expression.
By question was: Why would you have a pointer to a memory address that itself only holds a pointer somewhere else?
So far the only reasonable explanation is from @Victoria@lemmy.blahaj.zone:
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
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)
Yes, you can do crazy shit if you try hard enough, but every reasonable programmer would access
foo->child->b
alsfoo->child->b
and not via that crazy LISPy expression.By question was: Why would you have a pointer to a memory address that itself only holds a pointer somewhere else?
So far the only reasonable explanation is from @Victoria@lemmy.blahaj.zone:
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**
somewhereMagic.
Blasphemy.