you are viewing a single comment's thread
view the rest of the comments
[+] -6 points 2 years ago (1 child)

linked lists, trees, objects with references to other objects

That’s not a pointer to another pointer, but a pointer to a data structure that happens to contain another pointer.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 16 points 2 years ago* (last edited 2 years ago) (2 children)

    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)

  • source
  • parent
  • hideshow 4 child comments
  • [–] 1 point 2 years ago (1 child)

    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:

    • arrays of function pointers
    • pass by reference of a pointer
  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 2 years ago

    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

  • source
  • parent