Hey all, teaching myself CPP through a few books (and a little bit of CS in general through CS50) and hit a road block.

I understand what pointers are, and understand they’re a big part of programming. My question is why?

What do you use pointers for? Why is forwarding to a new memory address preferable to just changing the variable/replacing what’s already at the memory address or at a new one? Is it because new data could exceed the size of that address already allocated?

Thanks in advance!

  • xthexder@programming.dev
    link
    fedilink
    arrow-up
    3
    ·
    1 year ago

    One thing to remember is that arrays are just pointers under the hood. Even if you don’t use them directly, or are always using smart pointers like std::shared_ptr<T>, they’re still there.

    For example, accessing the following array:

    int foo[3] = {1, 2, 3};
    // foo is identical to int*, except the type contains a size
    foo[1] == 2;
    *(foo + 1) == 2;
    

    Realistically in modern C++ you could likely avoid raw pointers entirely. C++ references cover a ton of the pointer use cases. I’d say the main goal is to prevent data from being copied around needlessly, since that takes more time and memory bandwidth.