• Susaga@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      57
      ·
      27 days ago

      I think int*** is meant to be pointing at int**, but the image is just unclear about where everything is in perspective.

      • dohpaz42@lemmy.world
        link
        fedilink
        English
        arrow-up
        22
        arrow-down
        4
        ·
        27 days ago

        Pretty sure the image is clear:

        int*** -> int*
        int** -> int
        Int* -> int
        

        Clarity doesn’t mean correct. But that’s probably why it’s posted here. 🤷‍♂️

        • mexicancartel@lemmy.dbzer0.com
          link
          fedilink
          English
          arrow-up
          7
          ·
          27 days ago

          int** is inside a TV, and persumably int* must be inside another TV(even though uts not edited in). The image perespective is showing one thing inside the other, inside the other. So when when int*** points the TV it reference int**, which reference int* which reference int. Its just edited very bad

        • Susaga@sh.itjust.works
          link
          fedilink
          English
          arrow-up
          6
          ·
          27 days ago

          RT*** isn’t pointing at RT*, he’s pointing at the TV showing RT**. The fact you think otherwise is what makes the image unclear. I’m not sure why you insist on them being wrong.

    • ZILtoid1991@lemmy.worldOP
      link
      fedilink
      arrow-up
      6
      arrow-down
      1
      ·
      27 days ago

      The & operator references the value.

      int i;
      int* p = &i;
      

      In C++, the & at the function argument makes it a reference type (safe pointer).

      void someFunction(int& refVal) {
          [...]
      }
      
      • Flames5123@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        1
        arrow-down
        1
        ·
        27 days ago

        As someone who likes working with higher level languages, I never understood the pass by reference or even referencing different pointers. It never stuck out to me as useful in what I want software to do. It’s too close to hardware.

        • Sylvartas@lemmy.dbzer0.com
          link
          fedilink
          English
          arrow-up
          6
          ·
          edit-2
          27 days ago

          Most of the time you pass by reference for more outputs, or by const ref to avoid copying a big-ass data structure (which is not always straightforward, with structures smaller than a pointer, which are pretty big in 64 bits architecture, you lose more to the ref overhead than to the copy IIRC)

          • DahGangalang@infosec.pub
            link
            fedilink
            arrow-up
            4
            ·
            27 days ago

            Another reason I commonly see: to change the structure / “main pointer” to a data structure (esp during freeing and cleanup).

        • ZILtoid1991@lemmy.worldOP
          link
          fedilink
          arrow-up
          1
          ·
          27 days ago

          Reference values are quite useful, such as:

          double valOut;
          if (parseDouble(valOut) == 0) { //Argument of parseDouble is ref type, no & needed for input, no exceptions needed for error handling
              [...] //No error, code executed normally
          } else {
              [...] //Erroreus input
          }
          
    • dejected_warp_core@lemmy.world
      link
      fedilink
      arrow-up
      3
      ·
      27 days ago

      *x = dereference or “point to”. Treats the variable x as containing a pointer value. Evaluates to a variable existing at the address in x.

      &x = reference or “get address of”. Evaluates to the address of x.

      They’re complimentary operators, so *(&x) cancels out and is equvalent to just x.