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!

  • @[email protected]
    link
    fedilink
    31 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.