• rhpp
    link
    fedilink
    arrow-up
    98
    ·
    6 months ago

    Actually void* just points to anything, with no regard to the type of that thing. Pointing to the void is more accurately described by NULL pointer.

    • tunetardis@lemmy.ca
      link
      fedilink
      arrow-up
      38
      ·
      6 months ago

      Fair, though I guess my interpretation was that void* is kind of like a black hole in that anything can fall into it in an unsettling way that loses information about what it was?

      • Traister101@lemmy.today
        link
        fedilink
        arrow-up
        10
        ·
        6 months ago

        It erases the type of what your pointing at. All you have is a memory location, in contrast to int* which is a memory location of an int

    • frezik@midwest.social
      link
      fedilink
      arrow-up
      35
      arrow-down
      3
      ·
      6 months ago

      “Allow me to combine the worst feature of strong typing with the worst feature of dynamic typing”.

    • neo@lemy.lol
      link
      fedilink
      arrow-up
      7
      ·
      6 months ago

      So, when I want the void to point back at me, do I have to loop over void* or over NULL?
      And how many iterations?

      • sus
        link
        fedilink
        arrow-up
        3
        ·
        edit-2
        6 months ago

        as many iterations as it takes

        void* x = &x;
        char* ptr = (char*)&x;
        
        while (1) {
            printf("%d\n", (unsigned int)*ptr);
            ptr--;
        }
        
    • mox@lemmy.sdf.org
      link
      fedilink
      arrow-up
      5
      ·
      6 months ago

      In other words, void refers to the typing of the pointer, not a particular value that might be present at its target.

      (But I can see how someone might find it confusing.)